2017-07-24 187 views
0

有沒有更好的方法來分割包含轉義的分隔符的字符串。使用分隔符與轉義的分隔符分割字符串

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_partsecon&d_part與分裂功能將難逃以下字符意向加入一個轉義字符\&之前。

有沒有更好的方法來做到這一點,如果不是使用字符串拆分?

回答

1

您可以通過用戶的正則表達式!

如果分割字符串的?<!當前位置之前沒有與落後(\,雙斜槓逃吧)削減和連字符(&)

>>> 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'] 
0

它使用正則表達式是可能的:

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