Дмитрий Смирнов Asked:2020-03-29 22:03:11 +0000 UTC2020-03-29 22:03:11 +0000 UTC 2020-03-29 22:03:11 +0000 UTC 转义分隔符以进行拆分 772 大家好! 我使用 split(';') 函数将字符串拆分为列表。 但是有一行包含 ; 作为元素的一部分,如何转义';' 在一个字符串中,以便 split(';') 不使用该字符作为分隔符? python 2 个回答 Voted jfs 2020-03-31T11:19:25Z2020-03-31T11:19:25Z 如果您的格式需要分隔符转义,那么不同(不明显)的边缘情况的数量会急剧增加。为了不为您的格式(和您自己的错误)发明解析器,您可以使用 csv 模块: >>> import csv >>> list(csv.reader([r'a;b\;b;c\\;d;e\\\;e'], delimiter=';', escapechar='\\', quoting=csv.QUOTE_NONE)) [['a', 'b;b', 'c\\', 'd', 'e\\;e']] 可以使用所选字符转义分隔符,并转义escapechar. 或者您可以使用引号来转义字段: >>> list(csv.reader([r'a;"b;b";c\;d;"e\;e"'], delimiter=';')) [['a', 'b;b', 'c\\', 'd', 'e\\;e']] 结果是一样的。 Best Answer Никита Фурин 2020-03-29T23:00:37Z2020-03-29T23:00:37Z 如果您需要转义分号,那么您可以转义它,例如,使用反斜杠\。在这种情况下,您需要使用 re 正则表达式模块中的 split。 import re test = 'ok;block;ugolok\;qwe' re.split(r'(?<![\\]);', test) ['确定', '阻止', 'ugolok\;qwe'] 该设计(?<![\\])称为负回溯。
如果您的格式需要分隔符转义,那么不同(不明显)的边缘情况的数量会急剧增加。为了不为您的格式(和您自己的错误)发明解析器,您可以使用 csv 模块:
可以使用所选字符转义分隔符,并转义
escapechar
.或者您可以使用引号来转义字段:
结果是一样的。
如果您需要转义分号,那么您可以转义它,例如,使用反斜杠
\
。在这种情况下,您需要使用 re 正则表达式模块中的 split。该设计
(?<![\\])
称为负回溯。