Python清理句子中的单词

2024-10-01 09:34:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写一个函数,接受一个字符串(句子),然后清理它并返回所有字母、数字和一个hypen。但是代码似乎出错了。请知道我做错了什么。在

例如:布莱克德索萨是一个!d!0吨
应该回来了:布莱克·德索萨是个d0t

Python:

def remove_unw2anted(str):
    str = ''.join([c for c in str if c in 'ABCDEFGHIJKLNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890\''])
    return str

def clean_sentence(s):
    lst = [word for word in s.split()]
    #print lst
    for items in lst:
        cleaned = remove_unw2anted(items)
    return cleaned

s = 'Blake D\'souza is an !d!0t'
print clean_sentence(s)

Tags: 函数incleanforreturndefitemssentence
2条回答

一个使用string.translate的变体,它有利于?易于扩展,是string的一部分。在

import string

allchars = string.maketrans('','')

tokeep = string.letters + string.digits + '-'

toremove = allchars.translate(None, tokeep)

s = "Blake D'souza is an !d!0t"

print s.translate(None, toremove)

输出:

^{pr2}$

OP说只保留字符、数字和连字符-也许它们也意味着保留空白?在

你只回最后一个干净的字!在

应该是:

def clean_sentence(s):
    lst = [word for word in s.split()]

    lst_cleaned = []
    for items in lst:
        lst_cleaned.append(remove_unw2anted(items))
    return ' '.join(lst_cleaned)

一种较短的方法是:

^{pr2}$

相关问题 更多 >