从 Python 中的字符串中获取数字
Get number from string in Python
我有一个字符串,我只能从该字符串中获取数字。
url = "www.mylocalurl.com/edit/1987"
现在从那个字符串中,我只需要得到 1987
。
我一直在尝试这种方法,
id = [int(i) for i in url.split() if i.isdigit()]
但我只得到 []
列表。
您可以使用正则表达式并单独获取列表中的数字。
import re
url = "www.mylocalurl.com/edit/1987"
digit = re.findall(r'\d+', url)
输出:
['1987']
将所有 non-digits 替换为空白(有效地“删除”它们):
import re
num = re.sub('\D', '', url)
您什么也得不到,因为默认情况下 .split()
方法会在有空格的地方拆分句子。由于您正在尝试拆分没有空格的超链接,因此它不会拆分任何内容。您可以执行的操作称为使用正则表达式的捕获。例如:
import re
url = "www.mylocalurl.com/edit/1987"
regex = r'(\d+)'
numbers = re.search(regex, url)
captured = numbers.groups()[0]
如果你不知道什么是正则表达式,代码基本上就是这么说的。使用定义为 r'(\d+)'
的 regex
字符串,这基本上意味着捕获任何数字,search
到 url。然后在 captured
中,我们有第一个捕获的组,即 1987
.
如果您不想使用它,那么您可以使用您的 .split()
方法,但这次使用 /
作为分隔符提供拆分。例如`url.split('/').
我有一个字符串,我只能从该字符串中获取数字。
url = "www.mylocalurl.com/edit/1987"
现在从那个字符串中,我只需要得到 1987
。
我一直在尝试这种方法,
id = [int(i) for i in url.split() if i.isdigit()]
但我只得到 []
列表。
您可以使用正则表达式并单独获取列表中的数字。
import re
url = "www.mylocalurl.com/edit/1987"
digit = re.findall(r'\d+', url)
输出:
['1987']
将所有 non-digits 替换为空白(有效地“删除”它们):
import re
num = re.sub('\D', '', url)
您什么也得不到,因为默认情况下 .split()
方法会在有空格的地方拆分句子。由于您正在尝试拆分没有空格的超链接,因此它不会拆分任何内容。您可以执行的操作称为使用正则表达式的捕获。例如:
import re
url = "www.mylocalurl.com/edit/1987"
regex = r'(\d+)'
numbers = re.search(regex, url)
captured = numbers.groups()[0]
如果你不知道什么是正则表达式,代码基本上就是这么说的。使用定义为 r'(\d+)'
的 regex
字符串,这基本上意味着捕获任何数字,search
到 url。然后在 captured
中,我们有第一个捕获的组,即 1987
.
如果您不想使用它,那么您可以使用您的 .split()
方法,但这次使用 /
作为分隔符提供拆分。例如`url.split('/').