누구든지 도와주세요. 다음 작업이 있습니다.
가장 작은 것부터 가장 큰 것까지 정렬 된 정수를 포함하는 numbers1.txt라는 텍스트 파일을 만듭니다.
가장 작은 것부터 가장 큰 것까지 정렬 된 정수도 포함하는 numbers2.txt라는 다른 텍스트 파일을 만듭니다.
두 파일의 숫자를 all_numbers.txt라는 세 번째 파일에 씁니다.
all_numbers.txt의 모든 숫자는 가장 작은 것에서 가장 큰 것 순으로 정렬되어야합니다.
2 개의 txt 파일은 다음과 같습니다.
숫자 1 :
20
10
30
50
40
60
그때:
numbers2 :
999
80
150
101
100
아래 코드는 두 개의 txt 파일을 가져 와서 하나의 파일로 올바르게 저장합니다. 정수를 가장 낮은 값에서 가장 높은 값으로 정렬하는 데 문제가 있습니다. 어떤 도움이라도 대단히 감사하겠습니다! 감사합니다!
filenames = ['numbers1.txt', 'numbers2.txt']
with open('all_numbers.txt', 'w') as outfile:
for a in filenames:
with open(a) as infile:
outfile.write(infile.read() + "\n")
print("Your file is saved under all_numbers.txt")
현재 각 입력 파일의 내용을 읽는 즉시 출력에 기록하고 있습니다 ( outfile.write(infile.read() + "\n")
). 그것들을 처리하려면 먼저 목록을 읽은 다음 거기에서 작업하는 것이 좋습니다.
각 파일에서 정수 목록을 생성하는 방법에는 여러 가지가 있습니다. 하나는 전체 파일 .read()
을를 사용 하여 문자열로 읽고 초과 공백과 개행을 제거하고 개행으로 .strip()
분할하는 것입니다. 그런 다음 목록 이해력이나 맵 또는 이와 동등한 방법을 사용하여이 숫자 문자열 목록을 정수 목록으로 변환 할 수 있습니다.
그런 다음이 두 목록을 결합하고 정렬해야합니다. 이를위한 많은 알고리즘이 있습니다. 작업이 지정되지 않았기 때문에 내장 sorted()
함수 또는 list 메소드를 사용할 수 .sort()
있습니다. 이것은 함께 연결된 두 목록으로 구성된 목록에서 작동해야합니다. Python에서 두 목록을 연결하려면 목록을 추가하기 만하면됩니다 ( [1, 2] + [3, 4] == [1, 2, 3, 4]
).
따라서 최종 솔루션은 다음과 같습니다.
filenames = ['numbers1.txt', 'numbers2.txt']
num_lists = [[int(x) for x in open(f).read().strip().split('\n')] \
for f in filenames]
with open('all_numbers.txt', 'w') as outfile:
outfile.write('\n'.join(str(x) for x in sorted(sum(num_lists, []))) + '\n')
print('Your file is saved under all_numbers.txt')
주 sum(numbers_list, [])
에 해당 numbers_list[0] + numbers_list[1]
솔루션으로 더 나은,하지만입니다 것입니다 지금은 입력 파일의 수에 대한 작업. :)
$ echo '20
> 10
> 30
> 50
> 40
> 60' > numbers1.txt
$ echo '999
> 80
> 150
> 101
> 100' > numbers2.txt
$ python -q
>>> filenames = ['numbers1.txt', 'numbers2.txt']
>>> num_lists = [[int(x) for x in open(f).read().strip().split('\n')] \
... for f in filenames]
>>> with open('all_numbers.txt', 'w') as outfile:
... outfile.write('\n'.join(str(x) for x in sorted(sum(num_lists, []))) + '\n')
...
37
>>> print('Your file is saved under all_numbers.txt')
Your file is saved under all_numbers.txt
>>>
$ cat all_numbers.txt
10
20
30
40
50
60
80
100
101
150
999
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다