2013-09-15 5 views
3

Как я могу удалить "("
это исправить:?как я могу удалить "(", ")"?

import re, sys 
my_source = {} 
list_of_words = {} 
text_we_need = {} 
dict_of_words = {} 
max_characters = 0 
with open("my_source2.txt") as f: 
    my_source = f.read() 
p = re.compile(r'<a(.*?)</a>') 
my_source = p.sub('<a></a>', my_source, re.DOTALL) 
my_source = re.sub('<a>','',my_source) 
my_source = re.sub('(','',my_source) 
my_source = re.sub(')','',my_source) 

почему этот код, не работает для '(' ??

+1

Не пытайтесь разобрать HTML с регулярными выражениями. Используйте парсер HTML. – geoffspear

+1

Редакционная заметка: «Почему это не работает !?» без предоставления ошибки, которую вы получаете, не является продуктивным. Кроме того, что говорят python docs об экранировании специальных символов в регулярных выражениях? – StoryTeller

ответ

5

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

my_source = re.sub('\(','',my_source) 
my_source = re.sub('\)','',my_source) 
+3

Действительно, или другой способ избежать этого и избежать двух подсетей - использовать вместо этого '[()]' ... Но при беглом взгляде OP использует неправильный подход для этой работы в любом случае ... –

+0

спасибо за ваш объясните! – Mohammad

0

Я смотрю и я нашел несколько похожих вопросов.

  1. Python Strip multiple characters
  2. Regex How to remove symbols from a string Python
  3. How to remove parenthesis using regex on Python

Оказывается, что "двойные котировки" должны работать вместо 'одинарные котировок'.

+0

как я могу удалить '*', '\', '#', ... из текста? – Mohammad

0

Сообщение это на другом потоке, а также:

Не следует использовать регулярное выражение для чего-то это просто. Используйте перевод:

Python string doc

>>> str = "This is a (string) (example)..." 
>>> str.translate(None, "()") 
'This is a string example...' 
>>> 
Смежные вопросы