我有一个csv文件,其中包含一些名称,这些名称写在用逗号分隔的一行中,但没有空格。 “ maho,baba,fika,anst,koka,根”。我想做的是按字母顺序对这些名称进行排序,然后将它们写到新的文本文件中,这样结果将如下所示:
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')
答案 0 :(得分: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')
答案 1 :(得分: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
答案 2 :(得分:0)
您可以使用以下 oneliner :
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
anst
爸爸
菲卡
koka
猛男
根