2016-08-03 2 views
1

мне нужно дать мне строку между ~ и ^извлекает строку из двух строк в python?

У меня есть строка, как этот

:::ABC???,:::DEF???

мне нужно, чтобы получить строку между ними с питоном

Я хочу сделать все это, потому что я пытаюсь извлечь текст с html-страницы. как этот пример

<td class="cell-1"> 
    <div><span class="value-frame">&nbsp;~ABC^,~DEF^</span></div> 
</td> 

ответ

1

Похоже, вы хотите ABC и DEF, так что вам нужно написать заново, как это (. *?)

import re 
target = ' <td class="cell-1"><div><span class="value-frame">&nbsp;~ABC^,~DEF^</span></div></td>' 
matchObj = re.findall(r'~(.*?)\^', target) 
print matchObj 
# ['ABC', 'DEF'] 

можно более узнать о повторной модуль

+0

что это значит '(. * ?) '? – dragon

1

Вы можете использовать функцию isalpha() в выражении генератора. Затем объедините символы как один string, используя join().

def extract_string(s): 
    return ''.join(i for i in s if i.isalpha()) 

Пример вывода:

print extract_string(':::ABC???,:::DEF???') 
>>> ABCDEF 

Однако это только для извлечения всех символов, если вы хотите извлечь только символы между ~...^: выход

import re 
def extract_string(s): 
    match = re.findall(r"~([a-zA-z]*)\^", s) 
    return match 

Пример:

s = '&nbsp;~ABC^,~DEF^' 
print extract_string(s) 
>>> ['ABC', 'DEF'] 

Просто примечание стороны: если вы разбираете HTML с использованием регулярных выражений и/или строку манипуляции, как famous S.O. reply предполагает, пожалуйста, используйте HTML-парсер; например, вместо библиотеки Beautiful Soup: D!

Смежные вопросы