1
我正在嘗試使用結構讀取遠程文件。該文件正在下載到一個StringIO。因此,對於新的,讓我們asume該文件是在本地:Python中的StringIO和csv.reader問題2.7
fd=StringIO('#test=123\nblabla=456').getvalue()
現在我想刪除註釋,並在同一時間改變測試值:
dict(next(csv.reader([item], delimiter='=', quotechar="'")) for item in next(csv.reader([fd], delimiter='\n', quotechar="'")))
我得到的錯誤:
_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
但我怎麼打開通用換行模式下的文件?
編輯:
所以,我讀了StringIO。但我也改變它:內csv
標準的能力
content = re.sub(r'(?m)^\#.*\n?', '', fd) # remove lines starting with #
dict(next(csv.reader([item], delimiter='=', quotechar="'")) for item in next(csv.reader([fd], delimiter='\n', quotechar="'")))
感謝您的回答!當你沒有真正對fd做某些事情時,它運作良好。但我也解析它,然後我得到TypeError:解析期望的字符串或緩衝區。所以我真的需要getvalue() – gabn88
好吧,所以定義一個新的變量,其中包含'fd.getvalue()':done :),但解析它+餵它給csv似乎有點奇怪。你應該使用由csv模塊完成的解析,而不是重新做一個潛在的複雜解析。 –
啊,你說得對,先生!這真的很容易,我想很困難。 – gabn88