首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python正则表达式删除数字和带标点的数字

Python正则表达式删除数字和带标点的数字
EN

Stack Overflow用户
提问于 2016-09-20 06:09:22
回答 4查看 8K关注 0票数 4

我有以下字符串

代码语言:javascript
复制
 line = "1234567 7852853427.111 https://en.wikipedia.org/wiki/Dictionary_(disambiguation)"

我想用正则表达式去掉数字1234567 7852853427.111

我有这个re

代码语言:javascript
复制
nline = re.sub("^\d+\s|\s\d+\s|\s\d\w\d|\s\d+$", " ", line)

但它并没有做我希望它做的事情。

谁能给我指个方向?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-09-20 06:12:51

您可以使用:

代码语言:javascript
复制
>>> line = "1234567 7852853427.111 https://en.wikipedia.org/wiki/Dictionary_(disambiguation)" 
>>> print re.sub(r'\b\d+(?:\.\d+)?\s+', '', line)

https://en.wikipedia.org/wiki/Dictionary_(disambiguation)

正则表达式\b\d+(?:\.\d+)?\s+将匹配后面跟着1个或多个空格的整数或十进制数字。\b代表单词边界。

票数 5
EN

Stack Overflow用户

发布于 2016-09-20 06:18:30

如果您的正则表达式要求不是完全严格,这里有一个非正则表达式方法,使用itertools.dropwhile

代码语言:javascript
复制
>>> ''.join(dropwhile(lambda x: not x.isalpha(), line))
'https://en.wikipedia.org/wiki/Dictionary_(disambiguation)'
票数 2
EN

Stack Overflow用户

发布于 2016-09-20 06:29:47

我想这就是你想要的:

代码语言:javascript
复制
nline = re.sub("\d+\s\d+\.\d+", "", line)

它从行中删除数字。如果你想保留"http...“前面的空格你的第二个参数当然应该是“”。

如果您还想记录单个数字字符串,您可以将它们放在如下所示的组中:

代码语言:javascript
复制
>>> result = re.search("(\d+)\s(\d+\.\d+)", line)
>>> print(result.group(0))
1234567 7852853427.111
>>> print(result.group(1))
1234567
>>> print(result.group(2))
7852853427.111

学习和练习正则表达式的一个很好的方法是regex101

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39582859

复制
相关文章

相似问题

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