[英]Create Space Delimited File in Python
使用下面的代碼,我得到了正確的文件信息 - 有點。 這是代碼:
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換行符( \\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
包裝在另一個列表中它似乎已經是一個2D數組:
import csv
with open(filename,"wb") as f:
writer = csv.writer(f, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
writer.writerows(frames)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.