words = ['Duration12', 'Noun1', 'Adjective7']
result = [word[:-2] for word in words]
给我
['Duration','Nou','Adjectiv']
但是我想得到
[“持续时间”,“名词”,“形容词”]
是否有任何库函数可以实现它?还是应该显式检测可用数字然后将其删除?
答案 0 :(得分:2)
尝试这个:
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
答案 1 :(得分:1)
您可以使用列表推导功能,并使用re.sub
删除所有数字:
import re
words = ['Duration12', 'Noun1', 'Adjective7']
[re.sub(r'[0-9]', '', w) for w in words]
结果
['Duration', 'Noun', 'Adjective']
答案 2 :(得分:0)
您可以使用isalpha过滤数字:
words = ['Duration12', 'Noun1', 'Adjective7']
result = [''.join(c for c in w if c.isalpha()) for w in words]
print(result)
答案 3 :(得分:0)
如果您确定所有数字都位于单词的结尾,则可以按以下方式使用.strip
:
words = ['Duration12', 'Noun1', 'Adjective7']
results = [i.strip('0123456789') for i in words]
print(results) #give ['Duration', 'Noun', 'Adjective']
但是请记住,如果数字位于内部而不是末尾,则此方法将不起作用