使用下面的代码,我从文件中获取了正确的信息 - 某种程度。这是代码:

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
有帮助吗?

解决方案

我假设您使用记事本作为文本编辑器吗?UNIX样式换行符(\n)显示为记事本的框,因为它只支持Windows NewLines(\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'

其他提示

如果 frames 是一个你可以使用的 numpy 数组 numpy.savetxt() 功能:

numpy.savetxt(filename, frames)

要修复您的 csv 代码以二进制模式打开文件 wb 以避免损坏行尾,并且不要换行 frames 在另一个列表中它似乎已经是一个二维数组:

import csv

with open(filename,"wb") as f:
    writer = csv.writer(f, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
    writer.writerows(frames)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top