Записать list-of-list в текстовый файл с символами записи, разделенными пробелом? - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу записать список-список в текстовый файл с writelines(), используя пробел в качестве разделителей.Есть ли более простой способ сделать это, чем следующий код?

myList = [[1, 'A1', 100, '1001', '1', '1001', 'aa'],
          [2, 'B1', 101, '3008', '2', '3008', 'bb'],
          [3, 'C1', 102, '6987414', '3', '6987414', 'cc']]
strList = []
for row in myList:
    myList = [str(item) for item in row]
    strList.append(myList)

with open(r"D:/20181210", "w",encoding="utf-8") as fo:
    for row in strList:
        list1 = [(item+" ") for item in row  ]
        fo.writelines( list1)
        fo.write('\n')

Тогда вывод моего текстового файла выглядит так:

1 A1 100 1001 1 1001 aa 
2 B1 101 3008 2 3008 bb 
3 C1 102 6987414 3 6987414 cc 

Результат верный, но я думаю, что мой кодне самый простой.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Или используйте write и используйте вложенные str.join:

with open(r"D:/20181210", "w",encoding="utf-8") as fo:
    fo.write('\n'.join([' '.join(i) for i in myList]))
0 голосов
/ 10 декабря 2018

Либо используйте модуль stdlib csv, как рекомендует Barmar, либо создайте свои строки с помощью str.join и genexp.

lines = [['some', 'space', 'separated', 'fields'],
         ['in', 'a', 'few', 'rows']]

with open(filename, 'w') as fout:
    fout.writelines(' '.join(line) for line in lines)
...