Разделить строку с необязательной подстрокой - PullRequest
0 голосов
/ 11 июня 2019

Здесь _also необязательно, как разбить строку, делая _also как необязательное?

>>> aa="may_be_this.is_the_string"
>>> aa.split('this.')[1]
'is_the_string'
>>>
>>> aa="may_be_this_also.is_the_string"
>>> aa.split('this[_also]*.')[1] # something like this, to make _also as optional substring.

Ответы [ 3 ]

2 голосов
/ 11 июня 2019

регулярное регулярное выражение типа split

this(?:_also)*\.

, который имеет обязательный this
сопровождаемый многими опциональными _also
сопровождаемый буквальной точкой .

Ничего не фиксируется, поэтому эта информация исключается как элементы.

1 голос
/ 11 июня 2019

Вы смотрите re.split

In [21]: import re                                                                                    

In [22]: aa="may_be_this_also.is_the_string"                                                          

In [23]: re.split('this(_also)+.', aa)                                                                
Out[23]: ['may_be_', 'is_the_string']

In [24]: aa="may_be_this.is_the_string"                                                               

In [25]: re.split('this.', aa)                                                                        
Out[25]: ['may_be_', 'is_the_string']
0 голосов
/ 11 июня 2019

Вы можете использовать regxes для разделения:

Вы должны замаскировать литерал '.' в вашем шаблоне - иначе '.' обозначает что-либо.Вы можете использовать не группировку (?:....), чтобы добавить необязательный шаблон, если вы присвоите ему ? (== 0 или 1 вхождение):

import re

aa = "may_be_this.is_the_string"
print(re.split(r'this\.',aa))           # 'this' and literal '.'

bb = "may_be_this_also.is_the_string"
print(re.split(r'this(?:_also)?\.',bb)) # 'this' and optional '_also' and literal '.'

Выход:

['may_be_', 'is_the_string']
['may_be_', 'is_the_string']

Использование '[_also]*' позволяет использовать 0..n всех символов внутри [...] - вероятно, не то, что вы хотите.

Использование необработанных строк - хорошая привычка для определения шаблонов регулярных выражений.

Возможно, вы захотите прочитать regex-info - этомного, но охватывает основы.Для проверки регулярных выражений я хотел бы также подтвердить http://www.regex101.com - он имеет диалект Python и объясняет регулярные выражения в виде открытого текста.

...