Python:如何使用for循环或while循环来按字母顺序排列文件中的列表

时间:2013-08-06 22:56:39

标签: python for-loop while-loop

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

3 个答案:

答案 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()