首页 > 解决方案 > 对文本文件中的名称进行排序,将结果写入另一个文本文件

问题描述

我有一个 csv 文件,其中包含一些名称,这些名称写在一行中,用逗号分隔,但没有空格。“maho,baba,fika,anst,koka,root”。我想做的是按字母顺序对这些名称进行排序并将它们写入一个新的文本文件,这样结果就变成了这样:
anst
baba
fika
等。

这是我的尝试,但没有奏效..

names = list()
filename = 'users.csv'
with open (filename) as fin:  
      for line in fin:
            names.append(line.strip())

names.sort()
print(names)

filename = 'names_sorted1.txt'
with open (filename, 'w') as fout:
      for name in names:
            fout.write(name + '\n')

标签: pythonlistsortingnames

解决方案


您正在尝试排序names,它只包含一个字符串:整个逗号分隔的文本块。您需要的是一种将其分隔list为单个名称的方法,可以使用以下split方法完成:

in_filename = 'users.csv'
with open(in_filename ) as fin:  
    names = sorted(fin.read().strip().split(','))

然后,我们可以使用该join方法再次将 组合list成一个长字符串,其中 中的每个元素与下一个元素由list分隔'\n'

out_filename = 'names_sorted1.txt'
with open(out_filename , 'w') as fout:
    fout.write('\n'.join(names) + '\n')

推荐阅读