Сортировка имен в текстовом файле, запись результатов в другой текстовый файл - PullRequest
1 голос
/ 06 апреля 2019

У меня есть CSV-файл, содержащий несколько имен, написанных в одну строку, разделенных запятыми, но без пробелов, напр. "Маха, баба, фик, Длст, Koka, корень". Я хотел бы отсортировать эти имена в алфавитном порядке и записать их в новый текстовый файл, чтобы результат получился таким:
Длст
Бабы
фик
и т.д.

Это моя попытка, которая не сработала ..

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')

Ответы [ 3 ]

1 голос
/ 06 апреля 2019

Вы пытаетесь отсортировать 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 голосов
/ 06 апреля 2019

Вы можете использовать этот 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
baba
фика
кока
махо
root


демо

0 голосов
/ 06 апреля 2019

Вы можете использовать модуль 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
...