我的目标是编写一个函数,该函数输入文本并用空格替换拉丁字母(A-z)以外的所有字符,并删除所有包含数字的单词。然后用单个空格替换所有多个空格。
示例:
' hello, world! ho1hoho2ho, merry xmas!! ho1ho1 :))' -> 'hello world merry xmas'.
实现此功能的Python函数:
def clean_text(text):
text_valid = re.sub(u'[^A-z0-9]', ' ', text)
return ' '.join(word for word in text_valid.split()
if not re.search(r'\d', word))
现在,我想知道是否有单个正则表达式,所以我可以写类似
return ' '.join(re.findall(enter_my_magical_regex_here))
或者,也许还有另一种方法可以用更快(并且希望更短)替换上面的代码?
答案 0 :(得分:2)
您可以使用
' '.join(re.sub('([^A-Za-z0-9 ]|[^ ]*[0-9][^ ]*)', '', text).split())
答案 1 :(得分:1)
这将为您提供所需的输出-
x = ' hello, world! ho1hoho2ho, merry xmas!! ho1ho1 :))'
re.sub('[!,]', '', ' '.join([i for i in x.split() if not re.findall('[\d+:\\?\"<>*/|]', i)]))
但是您可能不得不在这里和那里进行调整