words = ['Duration12', 'Noun1', 'Adjective7']
result = [word[:-2] for word in words]
给我
[ '时间', '新', '形容词']
但是,我想
[ '时长', '名词', '形容词']
是否有任何库函数来实现它,或者我应该明确地检测到可用的数字,然后将其删除?
你可以使用列表中理解和使用re.sub
删除所有数字:
import re
words = ['Duration12', 'Noun1', 'Adjective7']
[re.sub(r'[0-9]', '', w) for w in words]
结果
['Duration', 'Noun', 'Adjective']
试试这个:
In [8]: from string import digits
In [9]: remove_digits = str.maketrans('', '', digits)
In [10]: [word.translate(remove_digits) for word in words]
Out[10]: ['Duration', 'Noun', 'Adjective']
欲了解更多信息请参考链接:Link
你可以滤除号码,使用isalpha:
words = ['Duration12', 'Noun1', 'Adjective7']
result = [''.join(c for c in w if c.isalpha()) for w in words]
print(result)
如果您确定所有的数字都是在词的结尾,您可以使用.strip
方式如下:
words = ['Duration12', 'Noun1', 'Adjective7']
results = [i.strip('0123456789') for i in words]
print(results) #give ['Duration', 'Noun', 'Adjective']
但请记住,如果数字是内部而不是结束这种方法是行不通的