Регулярное выражение, не заменяющее строку пробелами

#python #regex

Вопрос:

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

 edit = [["this, is sample 1."],["this!is @ sample two.*"]]
def clearpunch(sentence):
    clean = re.sub(r"'|W|d|_",r" ",sentence)
    return clean
edit = edit.map(clearpunch)
edit
 

получение такого текста
«[[«этот пример»], [«два примера»]]»

и мне нужен текст типа «[[«это образец «], [«это второй образец «]]»

Комментарии:

1. Функция, кажется, в порядке. Что такое edit ?

2. что это edit значит?

3. Просто а re.sub(r"'|W|d|_",r" ",sentence) вернет вам то, что вы хотите, чего вы ожидаете больше, чем этого?

4. редактировать-это список из списка многих примеров текстов, например

5. Сделайте это запущенным сценарием, демонстрирующим проблему. Мы должны уметь копировать, запускать и видеть то, что видите вы.

Ответ №1:

Это дает вам то, что вы хотите, используя функцию карты:

 import re

def clearpunch(sentence):
    clean = re.sub(r"'|W|d|_",r" ",sentence)
    return clean

edit = [["this, is sample 1."],["this!is @ sample two.*"]]

answer = [list(map(clearpunch, item)) for item in edit]

print(answer)
 

Ввод:

 [["this, is sample 1."],["this!is @ sample two.*"]]
 

Выход:

 [['this  is sample   '], ['this is   sample two  ']]
 

Если вам нужны только строчные английские буквы, вы можете использовать этот шаблон регулярных выражений: r"[^a-z]"