首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何识别python中包含或不包含数字的任何列表字符串

如何识别python中包含或不包含数字的任何列表字符串
EN

Stack Overflow用户
提问于 2015-04-01 10:44:07
回答 2查看 107关注 0票数 1

我希望识别列表中的任何字符串是否在任何位置都包含数字/数字,如果是,那么代码应该使用python从字符串中删除该数字。我的代码是

代码语言:javascript
复制
pattern = '\w+-\w+[-\w+]*|-';
pattern2 = '\d'
contents = ["babies","walked","boys","walking", "CD28", "IL-2", "honour"];
for token in contents:
    if token.endswith("ies"):
        f.write(string.replace(token,'ies','y',1))
    elif token.endswith('s'):
        f.write(token[0:-1])
    elif token.endswith("ed"):
        f.write(token[0:-2])
    elif token.endswith("ing"):
        f.write(token[0:-3])
    elif re.match(pattern,token):
        f.write(string.replace(token,'-',""))
    elif re.match(pattern2,token):
        f.write(token.translate(None,"0123456789"))
    else:
       f.write(t)
f.close()

实际上,问题在re.match(patter2,token)中。它不能识别一个数字作为标记,但是当我单独使用它时,f.write(token.translate(None,"0123456789"))工作得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-01 10:47:53

您只需在列表理解中使用re.sub

代码语言:javascript
复制
>>> contents = ["IL-2", "CD-28","IL2","25"]
>>> import re
>>> [re.sub(r'\d','',i) for i in contents]
['IL-', 'CD-', 'IL', '']

但是,作为一个更好的解决方案,您可以使用str.translate方法!

代码语言:javascript
复制
>>> from string import digits
>>> [i.translate(None,digits) for i in contents]
['IL-', 'CD-', 'IL', '']

如果你在python 3:

代码语言:javascript
复制
>>> trans_table = dict.fromkeys(map(ord,digits), None)
>>> [i.translate(trans_table) for i in contents]
['IL-', 'CD-', 'IL', '']
票数 6
EN

Stack Overflow用户

发布于 2015-04-01 10:47:50

如果要删除数字,请使用str.translate

代码语言:javascript
复制
contents = ["IL-2", "CD-28","IL2","25"];

print([s.translate(None,"0123456789") for s in contents])
['IL-', 'CD-', 'IL', '']

如果只想删除字符串包含混合的数字,则为:

代码语言:javascript
复制
print([s.translate(None,"0123456789") if not s.isdigit() else s for s in contents])
  ['IL-', 'CD-', 'IL', '25']

如果数字总是在末尾,则可以使用rstrip:

代码语言:javascript
复制
print([s.rstrip("0123456789") for s in contents])

对于python 3,您需要使用str.maketrans创建一个表

代码语言:javascript
复制
tbl = str.maketrans({k:"" for k in dig})


print([s.translate(tbl) for s in contents])
['IL-', 'CD-', 'IL', '']
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29388759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档