从字符串中提取数字的pythonic方法

pythonic method for extracting numeric digits from string

我正在开发一个程序来读取 CSV 文件并从中创建信息字典。 CSV 中的每一行本质上都是一个新的字典条目,分隔对象是值。

作为任务的一个子部分,我需要从字符串中提取未知数量的数字。我有一个可以工作的版本,但它似乎不是很 pythonic.

示例字符串如下所示:

variable = Applicaiton.Module_Name.VAR_NAME_ST12.WORD_type[0]

variable是python代码中的字符串名称,表示MODBUS中的变量名。我只想提取 .WORD_type[0] 之前的数字,这些数字与字符串被打包到的字节数有关。

这是我的工作代码,请注意,它嵌套在循环遍历 CSV 中各行的 for 语句中。 var_lengthvar_typekeys中的一部分,即{"var_length": var_length}

if re.search(".+_ST[0-9]{1,2}\.WORD_type.+", variable):
    var_type = "string"
    temp = re.split("\.", variable)
    temp = re.split("_", temp[2])
    temp = temp[-1]
    var_length = int(str.lstrip(temp, "ST")) / 2

您可以像这样尝试使用匹配组:

import re

variable = "Applicaiton.Module_Name.VAR_NAME_ST12.WORD_type[0]"
matches = re.match(r".+_ST(\d+)\.WORD_type.+", variable)
if matches:
    print(matches[1])

matches[0] 包含完整匹配项,matches[1] 包含匹配组。