我的字符串如下:
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']
请问,最好的方法是什么?
答案 0 :(得分:3)
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']
答案 1 :(得分: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']