Python拆分数据并创建变量/内容列表(变量名和数据)

Python拆分数据并创建变量/内容列表(变量名和数据),python,python-2.6,Python,Python 2.6,我希望使用相同的拆分分隔符将字符串拆分为多个数据字段 data = ",0101,0202,03car,04bird" print data.split(',') 然后我想从每个字段创建一个变量或列表。 例如: 数据可能以不同的顺序出现 data = ",03box,08train" 我需要做一个小循环来打印 #NumberOfField = int(len(re.findall(',[0-9]+[0-9]', data))) loop = 1 #loop start end = 8 #l

我希望使用相同的拆分分隔符将字符串拆分为多个数据字段

data = ",0101,0202,03car,04bird"
print data.split(',')
然后我想从每个字段创建一个变量或列表。 例如:

数据可能以不同的顺序出现

data = ",03box,08train"
我需要做一个小循环来打印

#NumberOfField = int(len(re.findall(',[0-9]+[0-9]', data)))
loop = 1 #loop start 
end = 8 #loop ends
while loop <= end: #a loop for x times
 stringvalue = loop.zfill(2) #to allways get 2 numbers in a string, example    01 
 print stringvalue+" - "+string[stringvalue]

wanted result:
01 - 
02 - 
03 - box
04 - 
05 - 
06 - 
07 - 
08 - train
#numberofield=int(len(关于findall(',[0-9]+[0-9]',数据)))
循环=1#循环开始
结束=8#循环结束
而loop是这样的吗

d={}
for item in data.split(','):
    if not item:
        continue
    l = list(item)
    d[''.join(l[0:2])]=''.join(l[2:])
如果对d使用defaultdict,也可能会丢失密钥

这种方法的问题是,如果“键”不是2位数字/字母,它将失败。您可以使用正则表达式:

import re

data = ",0101,0202,03car,04bird"
pat = re.compile(r'^(\d{2})(?!.*\1$)(.+)$')

res = {}
for s in data.split(','):
    matches = re.findall(pat, s)
    if len(matches) == 1:
        k, v = matches[0]
        res[k] = v

for i in range(1, 9):
    k = str(i).zfill(2)
    print k, '-', res.get(k, '')
    for i in range(1, 9):
        k = str(i).zfill(2)
        print k, '-', res.get(k, '')
输出:

01 - 
02 - 
03 - car
04 - bird
05 - 
06 - 
07 - 
08 - 

因此,经过一些测试,来自Apero(tnx)的脚本可以工作99.9% 我将正则表达式更改为“pat=re.compile(r'^(\w{2})(.+)$)” 因此,如果我做了一个:

data = ",03Y,04004,05005,0606,0A0A"
    print '04 = '+res.get('04', '')
    print '0A = '+res.get('0A', '')
我得到:

   01 = 
   03 = Y
   04 = 004
   0A = 00A
现在唯一的问题是

if data = "data = ",03Y,0404,05005,0606,0A00A"
0404  and not 04004
the output is:
   01 = 
   03 = Y
   04 = 
   0A = 00A
如您所见,匹配0404050606等的所有reg.ex都不正确匹配。 如果数据=04004、05005等,则其工作正常

对于一个在职的注册医生有什么建议吗 我的愿望是:

"data = ",03Y,0404,05005,0606,0A0A"
       01 = 
       03 = Y
       04 = 04
       0A = 0A

你的问题是什么?现在测试。。。。我能像预期的那样把它分开。。是否可以将其存储到字符串/变量/列表中?所以我可以稍后使用“print string[03]”显示值?wee,tnx,我测试了它,这是coool。这么多人能用十六进制吗?或者也可以将2个字符作为2个第一个符号。?例如:“,01car,FFbird”我只是改进了我的答案。关于您的问题,只需将(\d{2})替换为您想要匹配的任何条件。tnx,Apero,您的第一个ide工作得非常出色。。。我在使用十六进制时遇到问题。也许这是个问题?所以如果“data=”,03blurp,FFbird“,我想得到输出:“03-blurp+FF-bird”。(我看到了\d{2},但我不知道该使用什么语法:-)也许输出欺骗了我:-)我将正则表达式改为(r'^(\d{2})([a-zA-Z])(?!.\1$)(.+)$)reg.ex是可以的。。python脚本错误。。现在它开始工作了。
"data = ",03Y,0404,05005,0606,0A0A"
       01 = 
       03 = Y
       04 = 04
       0A = 0A