我是编程和python的新手。我需要读取文件中的列表,使用while循环或for循环按字母顺序排列该列表,然后将按字母顺序排列的列表写入第二个文件。该文件没有排序,也没有写入文件。任何见解或建设性的批评都是受欢迎的。
unsorted_list = open("unsorted_list.txt", "r") #open file congaing list
sorted_list = open ("sorted_list.txt", "w") #open file writing to
usfl = [unsorted_fruits.read()] #create variable to work with list
def insertion_sort(list): #this function has sorted other list
for index in range(1, len(list)):
value = list[index]
i = index - 1
while i >= 0:
if value < list[i]:
list[i+1] = list[i]
list[i] = value
i = i - 1
else:
break
insertion_sort(usfl) #calling the function to sort
print usfl #print list to show its sorted
sfl = usfl
sorted_furits.write(list(sfl)) #write the sorted list to the file
unsorted_fruits.close()
sorted_fruits.close()
exit()
答案 0 :(得分:0)
如果insertion_sort
之前有效,我想现在也可以。问题是usfl
只包含一个元素,即文件的内容。
如果每行都有水果,您可以使用它来填充您的列表:
usfl = [line.rstrip () for line in unsorted_fruits]
或如果是逗号分隔列表,您可以使用:
usfl = unsorted_fruits.read ().split (',')
答案 1 :(得分:0)
您的问题似乎是您处理文件的方式。
尝试以下方面的内容:
input_file = open("unsorted_list.txt", "r")
output_file = open("sorted_list.txt", "w")
#Sorting function
list_of_lines = list(input_file) #Transform your file into a
#list of strings of lines.
sort(list_of_lines)
long_string = "".join(list_of_lines) #Turn your now sorted list
#(e.g. ["cat\n", "dog\n", "ferret\n"])
#into one long string
#(e.g. "cat\ndog\nferret\n").
output_file.write(long_string)
input_file.close()
output_file.close()
exit()
答案 2 :(得分:0)
首先,我要感谢所有答案。使用这里的答案来指导我进行搜索和修改,我已经生成了符合要求的代码。
infile = open("unsorted_fruits.txt", "r")
outfile = open("sorted_fruits.txt", "w")
all_lines = infile.readlines()
for line in all_lines:
print line,
def insertion_sort(list):
for index in range(1, len(list)):
value = list[index]
i = index - 1
while i >= 0:
if value < list[i]:
list[i+1] = list[i]
list[i] = value
i = i - 1
else:
break
insertion_sort(all_lines)
all_sorted = str(all_lines)
print all_sorted
outfile.write(all_sorted)
print "\n"
infile.close()
outfile.close()
exit()