首页 > 解决方案 > 删除非数字字符,包括构成 URL 的数字

问题描述

我有一个由一组数字和一个 URL 组成的字符串。我只需要除附加到 URL 之外的所有数字字符。下面是我删除所有非数字字符的代码,但它不会从 URL 中删除数字。

test = '4758 11b98https://www.website11/111'
re.sub("[^0-9]","",test)

expected result: 47581198

标签: pythonregex

解决方案


原始答案

改变策略,只保留领先数字并忽略其余部分要容易得多:

import re
test = '47581198https://www.website11/111'
re.findall(r'^\d+', test)[0]

或者,如果不确定是否存在前导数字,则使用 match:

m = re.match(r'\d+', test)
if m:
    m = m.group()

输出:'47581198'

问题更改后编辑

如果您确定“http://”字符串不能在您的初始编号中。

然后您需要两次通过,一次用于删除 URL,另一次用于清除号码。

test = '4758 11b98https://www.website11/1111'
re.sub('\D', '', re.sub('https?://.*', '', test))

输出:'47581198'


推荐阅读