用python解析CSV中的困难字符串

2024-04-18 05:54:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的Firefox历史CSV构建一个解析器。它包括这样的行:

"2017-07-12 09:43:31","https://english.stackexchange.com/questions/26498/should-there-always-be-a-comma-after-therefore-however-etc","punctuation - Should there always be a comma after ""therefore","However" etc.? - English Language & Usage Stack Exchange"

有没有一种有效的方法来处理这个问题(例如,使用一些与模板匹配的工具)?理论上讲,解析应该是可能的,因为它总是"$DATE","$URL","$everything_else",但是我不能使用普通的CSV解析器(行中有许多逗号),而且我的脚本只匹配“,”,在这些情况下也会失败。你知道吗

另外,第三个字段并不总是存在,然后格式是"$DATE","$URL"。但我认为那是个小问题。你知道吗


Tags: csvhttps解析器urldateenglishetcbe
1条回答
网友
1楼 · 发布于 2024-04-18 05:54:39

也许有更好的方法可以做到这一点,但正则表达式可以做到这一点:

import re
capture = re.findall(r"^\"([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2})\",\"([^\"]+)\",?(.+)?$",csv_string)

它返回一个列表列表(下面的示例)。你知道吗

[('2017-07-12 09:43:31', 'https://english.stackexchange.com/questions/26498/should-there-always-be-a-comma-after-therefore-however-etc',   '"punctuation - Should there always be a comma after ""therefore","However" etc.? - English Language & Usage Stack Exchange"')]

根据您想要对数据执行的操作,您可能需要从中产生一个额外的处理程序。如果i表示行号,则可以通过以下方式访问信息:list_for_line[i][0]表示时间戳;list_for_line[i][1]表示url;list_for_line[i][2]表示描述。你知道吗

相关问题 更多 >