[英]Python Regex remove numbers and numbers with punctaution
我有以下字符串
line = "1234567 7852853427.111 https://en.wikipedia.org/wiki/Dictionary_(disambiguation)"
我想使用常规表达式删除数字1234567 7852853427.111
我有这个
nline = re.sub("^\d+\s|\s\d+\s|\s\d\w\d|\s\d+$", " ", line)
但它并没有实现我希望的目标。
谁能指出我正确的方向?
您可以使用:
>>> 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
用于单词边界。
如果您对regex的要求不完全严格,可以使用itertools.dropwhile
,这是一种非regex的方法:
>>> ''.join(dropwhile(lambda x: not x.isalpha(), line))
'https://en.wikipedia.org/wiki/Dictionary_(disambiguation)'
我认为这是您想要的:
nline = re.sub("\d+\s\d+\.\d+", "", line)
它从行中删除数字。 如果要在“ http ...”前面保留空格,则第二个参数当然应该是“”。
如果您还想记录单个数字字符串,则可以将它们分组,如下所示:
>>> 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 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.