删除字符串列表中的所有数字

时间:2019-02-03 13:36:19

标签: python list

words = ['Duration12', 'Noun1', 'Adjective7']
result = [word[:-2] for word in words]

给我

  

['Duration','Nou','Adjectiv']

但是我想得到

  

[“持续时间”,“名词”,“形容词”]

是否有任何库函数可以实现它?还是应该显式检测可用数字然后将其删除?

4 个答案:

答案 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']

但是请记住,如果数字位于内部而不是末尾,则此方法将不起作用