2017-02-04 19 views
0

попытка удалить следующую пунктуацию в python Мне нужно использовать методы replace, чтобы удалить эти символы пунктуации и заменить их пробелами.:; '"-?!/Удаление пунктуации и замена ее пробелом с использованием замены на Python

вот мой код:

text_punct_removed = raw_text.replace(".", "") 
text_punct_removed = raw_text.replace("!", "") 
print("\ntext with punctuation characters removed:\n", text_punct_removed) 

это только удалить последнюю я пытаюсь заменить, поэтому я попытался комбинируя их

text_punct_removed = raw_text.replace(".", "" , "!", "") 
print("\ntext with punctuation characters removed:\n", text_punct_removed) 

, но я получаю сообщение об ошибке, как удалить несколько знаков препинания? Также будет проблема, если я поставлю «в кавычках, как это», «что будет комментарий, есть ли способ обойти это? благодаря

+0

raw_text представляет собой текстовый файл, он ссылается, оно работает, если я один, как и удалить запятые, но мне нужно, чтобы удалить все знаки препинания в списке,:; ' "-/ – Supernova

+0

Пожалуйста, добавьте сообщение об ошибке.?! здесь, который вы получаете. – RejeeshChandran

ответ

0

Либо удалить один символ за один раз:

raw_text.replace(".", "").replace("!", "") 

Или, лучше использовать регулярные выражения (re.sub()):

re.sub(r"\.|!", "", raw_text) 
+0

спасибо, что сработали! как удалить цитату? потому что это будет внутри двух кавычек, которые заставляют его комментировать «" « – Supernova

+0

Я получил его, использую одну цитату вроде этого», – Supernova

1

Вот наивный, но рабочий раствор:

for sp in '.,"': 
    raw_text = raw_text.replace(sp, '') 
0

Если вам нужно заменить все пунктуации пробелом, вы можете использовать встроенный список препинания для заменить строку:

Python 3

import string 
import re 

my_string = "(I hope...this works!)" 

translator = re.compile('[%s]' % re.escape(string.punctuation)) 
translator.sub(' ', my_string) 

print(my_string) 
# Result: 
# I hope this works 

После, если вы хотите, чтобы удалить двойные пробелы внутри строки, вы можете сделать:

my_string = re.sub(' +',' ', my_string).strip() 

print(my_string) 
# Result: 
# I hope this works 
0

Если вам не нужно явно используйте замену:

exclude = set(",.:;'\"-?!/") 
text = "".join([(ch if ch not in exclude else " ") for ch in text]) 
0

Это работает в Python3.5.3:

from string import punctuation 

raw_text_with_punctuations = "text, with: punctuation; characters? all over ,.:;'\"-?!/" 
print(raw_text_with_punctuations) 
for char in punctuation: 
    raw_text_with_punctuations = raw_text_with_punctuations.replace(char, '') 
print(raw_text_with_punctuations)