如何忽略雙引號之間的逗號並刪除不在雙引號之間的逗號?自定義Python CSV分隔符
回答
包括電池 - 只需使用Python自帶的csv
module即可。
例子:
import csv
if __name__ == '__main__':
file_path = r"/your/file/path/here.csv"
file_handle = open(file_path, "r")
csv_handle = csv.reader(file_handle)
# Now you can work with the *values* in the csv file.
我確實使用了csv模塊。謝謝! – tijko
只是爲了你的興趣,你可以(大部分)做到這一點使用正則表達式;
mystr = 'No quotes,"Quotes",1.0,42,"String, with, quotes",1,2,3,"",,""'
import re
csv_field_regex = re.compile("""
(?:^|,) # Lookbehind for start-of-string, or comma
(
"[^"]*" # If string is quoted: match everything up to next quote
|
[^,]* # If string is unquoted: match everything up to the next comma
)
(?=$|,) # Lookahead for end-of-string or comma
""", re.VERBOSE)
m = csv_field_regex.findall(mystr)
>>> pprint.pprint(m)
['No quotes',
'"Quotes"',
'1.0',
'42',
'"String, with, quotes"',
'1',
'2',
'3',
'""',
'',
'""']
這處理除引號字符串中出現的轉義引號外的所有內容。也可以處理這種情況,但是正則表達式更糟糕;這就是爲什麼我們有csv
模塊。
-1應該返回帶引號的字符串,不帶括號引號。此外,這假設用戶負責將輸入文件拆分成行;當數據中出現新行時有點困難。 –
@JohnMachin:如果你用正則表達式解析csv,你就會遇到比這更大的問題。 ;) –
**你**是用正則表達式解析csv的人。我無法想象你爲什麼寫這個答案。 「大部分」==「失敗」。 –
- 1. Python CSV分隔符:分隔單元
- 2. 與自定義分隔符
- 3. 如何將UITableViewCell分隔符更改爲自定義分隔符?
- 4. 如何使用VBA將自定義分隔符導出爲CSV格式的CSV?
- 5. 自定義Rails URL參數分隔符?
- 6. 帶自定義分隔符的OPENROWSET
- 7. 千分隔符自定義位置
- 8. 自定義文件分隔符
- 9. 自定義UITableViewCell缺少行分隔符
- 10. RDLC自定義千位分隔符?
- 11. 使用pyparsing的自定義分隔符
- 12. 帶自定義分隔符的Number.toLocaleString()
- 13. 在angular.js中自定義$ routeParam分隔符
- 14. SQL輸出自定義分隔符
- 15. 讀或Python的readline的自定義分隔符
- 16. GridLayoutManager自定義分隔
- 17. 將分隔符分隔爲CSV
- 18. 製表符分隔到csv
- 19. 在PHP中確定.csv分隔符
- 20. WordPress的自定義菜單定界符/分隔符
- 21. Bash - 在自定義分隔符後保存字符串以分隔變量
- 22. iOS 7自定義分隔符不會模仿默認的分隔符行爲。
- 23. YQL(雅虎查詢語言)是否支持CSV的自定義分隔符?
- 24. 強制CSV分隔符
- 25. 更改CSV分隔符Clipobard.GetData()
- 26. 用CSV分隔字符串
- 27. std ::向帶自定義分隔符的字符串向量
- 28. 自定義字符串分隔符stringtemplate-4
- 29. 使用Ruby CSV更改導出的CSV中的字段分隔符/分隔符
- 30. SED語句更改/修改CSV分隔符和分隔符
你的問題很不清楚。如果你提供了一些輸入格式和你想得到的東西,我認爲這會有所幫助。 – zigg
希望你正在使用[一個正確的CSV解析器](http://docs.python.org/library/csv.html),而不是試圖手動解析。 –
邁克爾,這是一個練習,它想要將文本行分析爲csv格式。我結束了使用csv模塊。儘管如此,我仍然對一種解決模塊問題的方法感興趣。 – tijko