对文本文件中的名称进行排序,将结果写入另一个文本文件

问题描述 投票:1回答:3

我有一个csv文件,其中包含一些名称,这些名称由逗号分隔,但没有空格。 “MAHO,巴巴,菲卡,ANST,科卡,根”。我想要做的是按字母顺序对这些名称进行排序,并将它们写入新的文本文件,结果如下所示: ANST 巴巴 菲卡 等等

这是我的尝试,它不起作用..

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')
python list sorting names
3个回答
0
投票

你可以用这个衬垫:

with open("names.csv") as f, open("new.csv", "w") as fw:
    [fw.write(x+"\n") for x in sorted([x for x in ",".join(f.readlines()).split(",")])]

new.csv

ST安 狗屁 菲卡 还是一个孩子 马霍 Roo t


Demo


1
投票

您正在尝试对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')

0
投票

您可以使用csv模块,

$ cat names.csv
maho,baba,fika,anst,koka,root

$ cat sort_names.py
import csv

with open('names.csv') as csvfile, open('new.txt', 'w') as f:
   reader = csv.reader(csvfile, delimiter=',')
   for row in reader:
       print(row)
       for word in sorted(row):
           f.write("{}\n".format(word))

$ python sort_names.py
$ cat new.txt
anst
baba
fika
koka
maho
root
© www.soinside.com 2019 - 2024. All rights reserved.