我想将一个字符串拆分成多个数据字段,并使用相同的拆分分隔符。
data = ",0101,0202,03car,04bird"
print data.split(',')
然后我想从每个字段创建一个变量或列表。 例如:
print string[01]
result: 01
print string[02]
result: 02
print string[03]
result: car
print string[04]
result: bird
数据可能会以不同的顺序出现......
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
我尝试了一些不同的想法,我可以做一个8变量脚本,但数据可能包含50到200个字段。
答案 0 :(得分:0)
这样的事情?
d={}
for item in data.split(','):
if not item:
continue
l = list(item)
d[''.join(l[0:2])]=''.join(l[2:])
如果你对d使用defaultdict,你也可以丢失密钥
这种方法的问题是,如果“密钥”不是2位/字母
,它将失败答案 1 :(得分:0)
您可以使用正则表达式:
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 -
答案 2 :(得分:0)
经过一些测试后,Apero(tnx)的脚本工作率为99.9% 我将正则表达式更改为&#34; pat = re.compile(r&#39; ^(\ w {2})(。+)$&#39;)&#34; 所以,如果我这样做:
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
你可以看到匹配0404,0505,0606等的所有reg.ex都不匹配正确。 如果数据= 04004,05005等,它的工作。
是否有任何工作reg.ex的提示 我的愿望是:
"data = ",03Y,0404,05005,0606,0A0A"
01 =
03 = Y
04 = 04
0A = 0A