Python 使用delimeter拆分带转义delimeter的字符串

Python 使用delimeter拆分带转义delimeter的字符串,python,string,python-3.x,split,Python,String,Python 3.x,Split,有没有更好的方法来拆分包含转义delimeter的字符串 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

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

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\u部分
secon&d\u部分
中的
\
之前添加了一个转义字符
\
,目的是分割函数将转义以下字符


如果不使用字符串拆分,还有更好的方法吗?

可以使用正则表达式:

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

你可以使用正则表达式

如果
,则拆分?字符串的当前位置前面没有倒斜杠(\,两个斜杠转义)、斜杠和符号(&)

>>重新导入
>>>关于拆分(r’(?)?
>>> import re
>>> re.split(r'(?<!\\)&', string)
['fir\\&st_part', 'secon\\&d_part']
>>> import re
>>> print [each.replace("\&","&") for each in re.split(r'(?<!\\)&', string)]
['fir&st_part', 'secon&d_part']