我从文件中提取了一些数据,并希望将其写入第二个文件。但是我的程序正在返回错误:
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()
答案 0 :(得分:72)
答案 1 :(得分:26)
''.join(buffer)
答案 2 :(得分:5)
file2.write( str(buffer) )
说明:
str(anything)
会将任何python对象转换为其字符串表示形式。类似于您执行print(anything)
时获得的输出,但是作为字符串。
注意:这可能不是OP想要的,因为它无法控制buffer
的元素如何连接 - 它会在每个元素之间放置,
- 但它可能是对别人有用。
答案 3 :(得分:5)
buffer=['a','b','c']
obj=str(buffer)
obj[1:len(obj)-1]
将“'a','b','c'”作为输出
答案 4 :(得分:3)
file2.write(','.join(buffer))
答案 5 :(得分:2)
方法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 :(得分:1)
# it handy if it used for output list
list = [1, 2, 3]
stringRepr = str(list)
# print(stringRepr)
# '[1, 2, 3]'
答案 7 :(得分:1)
来自{3.6}的the official Python Programming FAQ:
将多个字符串连接在一起的最有效方法是什么?
str
和bytes
对象是不可变的,因此将多个字符串连接在一起效率低,因为每个连接都会创建一个新对象。在一般情况下,总运行时间成本是总字符串长度的二次方。为了积累许多str对象,推荐的习惯用法是将它们放入列表并在结尾处调用
str.join()
:
chunks = []
for s in my_strings:
chunks.append(s)
result = ''.join(chunks)
(另一个合理有效的习语是使用
io.StringIO
)要累积许多字节对象,推荐的习惯用法是使用就地连接(
bytearray
运算符)扩展+=
对象:
result = bytearray()
for b in my_bytes_objects:
result += b