【发布时间】:2016-08-01 13:08:02
【问题描述】:
TL;博士:
line = "one|two|three\|four\|five"
fields = line.split(whatever)
whatever 的值是什么:
fields == ['one', 'two', 'three\|four\|five']
我有一个由竖线字符分隔的文件。该文件中的一些字段还包括管道,由前导反斜杠转义。
例如,此文件中的单行数据可能具有['one', 'two', 'three\|four\|five'] 的数组表示,这将在文件中表示为one|two|three\|four\|five
我无法控制文件。我无法预处理文件。我必须一次性完成。
我最终需要将此文件的每一行拆分为单独的字段,但事实证明,前导反斜杠是各种麻烦。我最初尝试使用否定的前瞻,但在 python 字符串和双转义字符周围有某种我不理解的奥秘,这让我无法弄清楚。
对解决方案的解释表示赞赏,但可选。
【问题讨论】:
-
编写你自己的解析器来解释转义序列,Python
re中的正则表达式无法处理它。 -
你能澄清一下你的最终预期输出是什么吗?
['one', 'two', 'three\|four\|five']或['one', 'two', 'three', 'four', 'five']? -
@spasic:前者。
标签: python regex split negative-lookahead