簡體   English   中英

在Python中創建空間分隔文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM