将列表转换为字符串

PAR*_*JAT 62 python

我从文件中提取了一些数据,并希望将其写入第二个文件.但我的程序返回错误:

sequence item 1: expected string, list found
Run Code Online (Sandbox Code Playgroud)

这似乎正在发生,因为write()想要一个字符串,但它正在接收一个列表.

那么,关于这段代码,如何将列表转换buffer为字符串以便我可以将内容保存bufferfile2

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()
Run Code Online (Sandbox Code Playgroud)

mik*_*iku 72

试试str.join:

file2.write(' '.join(buffer))
Run Code Online (Sandbox Code Playgroud)

文件说:

返回一个字符串,该字符串是可迭代迭代中字符串的串联.元素之间的分隔符是提供此方法的字符串.


blo*_*ley 27

''.join(buffer)
Run Code Online (Sandbox Code Playgroud)

  • 是的,虽然OP可能想要一个空格或逗号作为我猜的分隔符. (2认同)

Too*_*eve 5

file2.write( str(buffer) )
Run Code Online (Sandbox Code Playgroud)

说明: str(anything)将任何python对象转换为其字符串表示形式.类似于你得到的输出print(anything),但是作为一个字符串.

注意:这可能不是OP想要的,因为它无法控制buffer连接元素的方式 - 它将放在,每个元素之间 - 但它可能对其他人有用.


Sau*_*abh 5

buffer=['a','b','c']
obj=str(buffer)
obj[1:len(obj)-1]
Run Code Online (Sandbox Code Playgroud)

将输出"'a','b','c'"