将列表转换为string
我已经从一个文件中提取了一些数据,并希望将其写入第二个文件。 但是我的程序正在返回错误:
sequence item 1: expected string, list found
这似乎正在发生,因为write()
想要一个string,但它正在接收一个列表。
所以,关于这个代码,我怎样才能将列表buffer
转换为一个string,以便我可以将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()
尝试str.join
:
file2.write(' '.join(buffer))
文档说:
返回一个string,它是可迭代迭代中string的串联。 元素之间的分隔符是提供此方法的string。
''.join(buffer)
file2.write( str(buffer) )
说明: str(anything)
将把任何python对象转换成它的string表示forms。 类似于你输出的结果,如果你print(anything)
,但作为一个string。
注意:这可能不是OP想要的,因为它不能控制buffer
的元素如何连接 – 它会放在每个元素之间 – 但对其他人可能是有用的。
file2.write(','.join(buffer))
方法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))
buffer=['a','b','c'] obj=str(buffer) obj[1:len(obj)-1]
将输出“a”,“b”,“c”作为输出
# it handy if it used for output list list = [1, 2, 3] stringRepr = str(list) # print(stringRepr) # '[1, 2, 3]'