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

问题描述 投票:1回答:4
words = ['Duration12', 'Noun1', 'Adjective7']
result = [word[:-2] for word in words]

给我

[ '时间', '新', '形容词']

但是,我想

[ '时长', '名词', '形容词']

是否有任何库函数来实现它,或者我应该明确地检测到可用的数字,然后将其删除?

python list
4个回答
1
投票

你可以使用列表中理解和使用re.sub删除所有数字:

import re
words = ['Duration12', 'Noun1', 'Adjective7']
[re.sub(r'[0-9]', '', w) for w in words]

结果

['Duration', 'Noun', 'Adjective']

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


0
投票

你可以滤除号码,使用isalpha

words = ['Duration12', 'Noun1', 'Adjective7']

result = [''.join(c for c in w if c.isalpha()) for w in words]
print(result)

0
投票

如果您确定所有的数字都是在词的结尾,您可以使用.strip方式如下:

words = ['Duration12', 'Noun1', 'Adjective7']
results = [i.strip('0123456789') for i in words]
print(results) #give ['Duration', 'Noun', 'Adjective']

但请记住,如果数字是内部而不是结束这种方法是行不通的

© www.soinside.com 2019 - 2024. All rights reserved.