Python-получить строку между символами

Мне нужно дать мне строку между~ а также^.
У меня есть такая строка:

~~~~ ABC ^ DEF ^ HGK > LMN ^  

Мне нужно получить строку между ними с помощью Python.
Я пробовал это:

import re
target = ' ~~~~ ABC ^ DEF ^ HGK > LMN ^  '
matchObj = re.findall(r'~(.*?)\^', target)
print matchObj 

Но результат:

['~~~ ABC ']

Я ожидаю, что это:

[ABC , DEF , HGK , LMN ]

или же

[^ABC , ^DEF , ^HGK , LMN ]
 noɥʇʎԀʎzɐɹƆ03 авг. 2016 г., 19:25
Пожалуйста, не используйте этоvariableNamingStyle в питоне. Это против PEP 8, официального руководства по стилю Python.
 CentAu03 авг. 2016 г., 19:18
Пожалуйста, отредактируйте ваш вопрос так, чтобы он был полезен другим.
 Tim Pietzcker03 авг. 2016 г., 19:18
Какой результат вы ожидали?" ABC " или же"~~~ ABC ^ DEF ^ HGK > LMN "?
 dragon03 авг. 2016 г., 19:26
@CentAu я редактировал это
 noɥʇʎԀʎzɐɹƆ03 авг. 2016 г., 19:23
Золотой вопрос, который нужно задать себе при написании вопроса: «Что бы подумал ответ?» Вы предоставили очень мало информации. Узнайте, как создатьминимальный воспроизводимый пример

Ответы на вопрос(4)

Ваша идея использовать ленивый квантификатор хороша, но это не обязательно дает вам самое короткое совпадение - только самое короткое совпадение из текущей позиции движка регулярных выражений. Если вы хотите запретить разделители начала / конца быть частью совпадения, вам необходимо явно исключить их из списка допустимых символов. Отрицаниекласс персонажа здесь пригодится.

target = ' ~~~~ ABC ^ DEF ^ HGK > LMN ^  '
matches = re.findall(r'~([^~^]*)\^', target)
print matches 
 dragon03 авг. 2016 г., 19:44
результат[' ABC '] Но мне нужно['ABC' , 'DEF' ,'HGK' ,'LMN' ]
Решение Вопроса

Без регулярного выражения:

>>> "".join([x for x in target if x.isalpha() or x == ' ']).split()
['ABC', 'DEF', 'HGK', 'LMN']

Это берет пробел и буквенные символы и создает новую строку, а затем разбивает ее на слова в списке

Вот мой точный код из командной строки Python 3:

>>> target = ' ~~~~ ABC ^ DEF ^ HGK > LMN ^  '
>>> xx = "".join([x for x in target if x.isalpha() or x == ' ']).split()
>>> xx
['ABC', 'DEF', 'HGK', 'LMN']
>>> 
 joel goldstick03 авг. 2016 г., 20:38
Я понятия не имею, что вы делаете здесь - возможно, читая HTML-страницу. В любом случае, пожалуйста, попробуйте 3 строки кода в моем ответе выше
 joel goldstick03 авг. 2016 г., 23:07
конечно, или просто искать красивый суп. Вы можете обнаружить, что у кого-то была такая же проблема
 dragon03 авг. 2016 г., 21:10
Если я задам другой вопрос, вы сможете помочь?
 dragon03 авг. 2016 г., 20:18
это дает мне полный источник['DOCTYPE', 'html', 'PUBLIC', 'WCDTD', 'XHTML', 'TransitionalEN', 'httpwwwworgTRxhtmlDTDxhtmltransitionaldtdDOCTYPE', 'html', и т.д .... но мне нужно~~~~ ABC ^ DEF ^ HGK > LMN ^ эта часть только чтобы быть такой[ABC , DEF , HGK , LMN ]
 dragon03 авг. 2016 г., 23:26
 joel goldstick03 авг. 2016 г., 20:40
Ах, я вижу ваше редактирование. Сначала используйте красивый суп, чтобы взять текст, который вы хотите. Это действительно другой вопрос. Когда у вас естьtargetтогда у меня будет работать мой код

Я не уверен, какой именно результат желателен, но, возможно, это?

>>> matchObj = re.findall(r'~+(.*?)\^', target)
>>> print(matchObj)
[' ABC ']
 dragon03 авг. 2016 г., 19:45
результат[' ABC '] Но мне нужно['ABC' , 'DEF' ,'HGK' ,'LMN' ]
 joel goldstick03 авг. 2016 г., 20:07
@dragon Я отредактировал свой ответ, чтобы дать то, что вы спрашиваете здесь

вот мое решение:

ваш вклад:

In [12]: target = ' ~~~~ ABC ^ DEF ^ HGK > LMN ^  '

заменить все символы или разделители на' ' и разделить результат

In [13]: b = re.sub(r'[^\w]', ' ', target).split()

In [14]: b
Out[14]: ['ABC', 'DEF', 'HGK', 'LMN']
 dragon03 авг. 2016 г., 22:48
это дает мне полный источник['DOCTYPE', 'html', 'PUBLIC', 'WCDTD', 'XHTML', 'TransitionalEN', 'httpwwwworgTRxhtmlDTDxhtmltransitionaldtdDOCTYPE', 'html'] и т.д .... но мне нужно~~~~ ABC ^ DEF ^ HGK > LMN ^ эта часть только чтобы быть такой[ABC , DEF , HGK , LMN ]
 Ganesh_03 авг. 2016 г., 22:58
@dragon, будь точнее['DOCTYPE', 'html', 'PUBLIC', 'WCDTD', 'XHTML', 'TransitionalEN', 'httpwwwworgTRxhtmlDTDxhtmltransitionaldtdDOCTYPE', 'html'] , предоставьте мне ваш вклад и каков ваш ожидаемый результат. так что я могу помочь тебе

Ваш ответ на вопрос