Подтвердить что ты не робот

Преобразование списка в строку

Я извлек некоторые данные из файла и хочу записать его во второй файл. Но моя программа возвращает ошибку:

sequence item 1: expected string, list found

Это происходит, потому что write() хочет строку, но получает список.

Итак, что касается этого кода, как можно преобразовать список buffer в строку, чтобы я мог сохранить содержимое buffer до file2?

file = open('file1.txt','r')
file2 = open('file2.txt','w')
buffer = []
rec = file.readlines()
for line in rec :
    field = line.split()
    term1 = field[0]
    buffer.append(term1)
    term2 = field[1]
    buffer.append[term2]
    file2.write(buffer)  # <== error
file.close()
file2.close()
4b9b3361

Ответ 1

Попробуйте str.join:

file2.write(' '.join(buffer))

Документация гласит:

Возвращает строку, которая является конкатенацией строк в итерабельной итерабельной. Разделителем между элементами является строка, предоставляющая этот метод.

Ответ 2

''.join(buffer)

Ответ 3

file2.write( str(buffer) )

Объяснение: str(anything) преобразует любой объект python в его строковое представление. Как и результат, вы получаете, если вы делаете print(anything), но как строку.

ПРИМЕЧАНИЕ. Это, вероятно, не то, что хочет OP, так как он не контролирует, как элементы buffer объединяются - он будет помещать , между каждым из них, но может быть полезным кому-то другому.

Ответ 4

file2.write(','.join(buffer))

Ответ 5

Способ 1:

import functools
file2.write(functools.reduce((lambda x,y:x+y), buffer))

Способ 2:

import functools, operator
file2.write(functools.reduce(operator.add, buffer))

Способ 3:

file2.write(''join(buffer))

Ответ 6

buffer=['a','b','c']
obj=str(buffer)
obj[1:len(obj)-1]

даст "'a', 'b', 'c'" в качестве вывода

Ответ 7

# it handy if it used for output list
list = [1, 2, 3]
stringRepr = str(list)
# print(stringRepr)
# '[1, 2, 3]'