0

我对编程和 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()
4

3 回答 3

0

如果insertion_sort以前有效,我想它现在也有效。问题是usfl它只包含一个元素,即文件的内容。

如果每行都有一个水果,您可以使用它来填充您的列表:

usfl = [line.rstrip () for line in unsorted_fruits]

或者如果它是一个逗号分隔的列表,您可以使用:

usfl = unsorted_fruits.read ().split (',')
于 2013-08-06T23:24:44.863 回答
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() 
于 2013-08-07T06:58:12.247 回答
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()
于 2013-08-06T23:34:50.783 回答