使用分隔符

时间:2017-07-24 18:05:29

标签: python string python-3.x split

有没有更好的方法来拆分包含转义的分隔符的字符串。

string = "fir\&st_part&secon\&d_part"
print(string.split('&'))
# is giving me
>>> ['fir\\', 'st_part', 'secon\\', 'd_part']
# but not
>>> ['fir&st_part', 'secon&d_part']

我在\&中的fir&st_part之前添加了一个转义字符secon&d_part,目的是拆分函数将转义后续字符。

如果没有使用字符串拆分,有没有更好的方法呢?

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式!

如果?<!字符串的当前位置前面没有后向(\,两个斜杠来逃避它)斜线和&符号(&amp;)

>>> import re
>>> re.split(r'(?<!\\)&', string)
['fir\\&st_part', 'secon\\&d_part']

使用结果列表,您可以迭代并替换转义的'\&amp;'与'&amp;'如果有必要的话!

>>> import re
>>> print [each.replace("\&","&") for each in re.split(r'(?<!\\)&', string)]
['fir&st_part', 'secon&d_part']

答案 1 :(得分:0)

可以使用正则表达式:

import re
string = "fir\&st_part&secon\&d_part"
re.split(r'[^\\]&', string)
# ['fir\\&st_par', 'secon\\&d_part']