使用下面的代码,我得到了正确的文件信息 - 有点像。这是代码:
filename = raw_input('What would you like to name the file? ')
import csv
data = [frames]
out = csv.writer(open(filename,"w"), delimiter=' ',quoting=csv.QUOTE_MINIMAL)
out.writerows(data)
这会在文本文件中生成如下所示的内容:
"[255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0]" "[ 0 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171
171 171]"
我希望这些信息看起来像这样:
255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 []0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2个括号表示一个表示新行信息的字符。这是我文本编辑器上的一个小矩形,我不确定角色是什么。
那么,我如何摆脱引号和括号并使用其他字符?
编辑:
我尝试使用下面的代码并收到以下错误:
Traceback (most recent call last):
File "(stdin)", line 1, in (module)
File "backandforth3.py", line 154, in (module)
out.write(' '.join(frame))
Type Error: sequence item 0: expect string, numpy.int32 found
答案 0 :(得分:4)
我假设您使用记事本作为文本编辑器? Unix风格的换行符(\n
)在记事本中显示为框,因为它只支持Windows换行符(\r\n
)。也就是说,这应该提供您期望的输出:
filename = raw_input('What would you like to name the file? ')
with open(filename, 'wb') as out:
for frame in frames:
out.write(' '.join(str(num) for num in frame))
out.write('\r\n')
没有理由将frames
包装在另一个列表中;假设变量是一个数字列表列表,正如预期的输出所示,这应该可以正常工作。
此外,如果您必须拥有输出中描述的“框”,请将'\r\n'
替换为'\n'
。
答案 1 :(得分:0)
如果frames
是一个numpy数组,那么你可以使用numpy.savetxt()
函数:
numpy.savetxt(filename, frames)
修复csv
代码以二进制模式wb
打开文件以避免破坏行尾,并且不将frames
包装在另一个列表中它似乎已经是2D阵列:
import csv
with open(filename,"wb") as f:
writer = csv.writer(f, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
writer.writerows(frames)