如何从字符串python中提取特定变量?

时间:2019-04-08 16:54:51

标签: python

我有一个像$ awk 'NR==1{two=$2; three=$3; next} $2+0!=0{print two,$2} $3+0!=0{print three,$3}' openx2.txt second 0.08 first 0.04 first -3.00 这样的字符串(带有空格)。


我想提取数字并将它们存储在具有特定名称的介绍变量中。例如,我要使用变量"A:22.0 /4.03 B:15.05 /3.0 C:120.15 /12.4"A1 = 22.0A2 = 4.03B1 = 15.05B2 = 3.0C1 = 120.15
字符串中的变量可能不是按此顺序排列的,但是始终会有以下组:
C2 = 12.4按此顺序排列。

任何帮助或想法都会受到赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

有百万种方法可以做到这一点。正则表达式非常有用,对于缺失值和其他边缘情况可能很有帮助。假设您的数据绝不会丢失任何值或任何其他格式,那么简单的字符串替换和拆分就可以完成这项工作。

您会发现基于字符串(A1,A2等)中的值很难命名变量。最好使用字典来存储此类数据。

复杂的部分是字典的构造,在这种情况下,它是从0到拆分列表中项的长度计数(以3s为单位),并使用这些数字来创建字典的key:value对

原始字符串

x = "A:22.0 /4.03 B:15.05 /3.0, C:120.15 /12.4"

用空格替换特殊字符并在空格上分割(将删除多余的空白)

b = x.replace(':',' ').replace('/',' ').split()

给你

['A', '22.0', '4.03', 'B', '15.05', '3.0,', 'C', '120.15', '12.4']

根据您的数据构建字典

output = {b[x]:[b[x+1],b[x+2]] for x in range(0,len(b),3)}

输出:

{'A': ['22.0', '4.03'], 'B': ['15.05', '3.0,'], 'C': ['120.15', '12.4']}

然后按以下方式访问数据:

output['A'][0]
22.0
output['A'][1]
4.03

答案 1 :(得分:0)

要提取它们,您应该使用Regex:这是文档:RegEx (Python)

但是我建议您看一下字典。它将提供对键和值的控制,看起来像您所需要的。这是一个示例:

variableName = {
        "A1":22.0,
        "A2":4.03
    }

以下是有关如何使用它的良好教程的链接:https://www.pythonforbeginners.com/dictionary/how-to-use-dictionaries-in-python/