1

我有如下字符串:

data = """
ID: ID/123456-00000003c
Value2: 1382386949.12
Value3: 00420903237127
Value4: 21

ID: ID/654431-0000000a
Value2: 1382386943.1032
Value3: 004989353474713
Value4: 33"""

每个变量的形状都在单独的一行中:

variable: value

我想创建一个函数来获取变量值的列表。像这样的东西:

def get_values_of( variable_name ):
    code....
    return variable_list

如果我这样调用这个函数:

get_values_of(ID)

它返回变量“ID”的值列表:

variables = ['ID/123456-00000003c', 'ID/654431-0000000a']

或者

get_values_of(Value2)

它返回

variables = ['1382386949.12', '1382386943.1032']

请问,最好的方法是什么?

4

2 回答 2

4
data = """
ID: ID/123456-00000003c
Value2: 1382386949.12
Value3: 00420903237127
Value4: 21

ID: ID/654431-0000000a
Value2: 1382386943.1032
Value3: 004989353474713
Value4: 33"""

myData = {}
for line in data.split("\n"):
    if line:
        key, value = line.split(": ")
        myData.setdefault(key, [])
        myData[key].append(value)

def get_values_of(actualKey):
    return myData[actualKey]

print get_values_of("ID")
print get_values_of("Value2")
print get_values_of("Value3")
print get_values_of("Value4")

输出

['ID/123456-00000003c', 'ID/654431-0000000a']
['1382386949.12', '1382386943.1032']
['00420903237127', '004989353474713']
['21', '33']
于 2013-10-23T07:47:59.797 回答
2

此代码应该可以帮助您入门。

data = """
ID: ID/123456-00000003c
Value2: 1382386949.12
Value3: 00420903237127
Value4: 21

ID: ID/654431-0000000a
Value2: 1382386943.1032
Value3: 004989353474713
Value4: 33"""

for line in data.splitlines():
    if not line: # skips empty lines that would otherwise cause errors
        continue
    key, value = line.split(': ')
    print 'key: {}, value: {}'.format(key, value)

输出:

>>> 
key: ID, value: ID/123456-00000003c
key: Value2, value: 1382386949.12
key: Value3, value: 00420903237127
key: Value4, value: 21
key: ID, value: ID/654431-0000000a
key: Value2, value: 1382386943.1032
key: Value3, value: 004989353474713
key: Value4, value: 33

基本上,您正在遍历每一行,然后在 处拆分该行:以获取键和值。您可以为每个段创建字典,或者通过检查每次迭代的键值来做任何您想做的事情。你的选择。此代码可帮助指导您并推动您朝着正确的方向前进。


您想要的样本:

def get_vars(data, var):
    return [line.split(': ')[1] for line in data.splitlines() if line and line.startswith(var)]

>>>print get_vars(data, 'ID')
['ID/123456-00000003c', 'ID/654431-0000000a']
于 2013-10-23T07:41:03.183 回答