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

2024-05-19 15:39:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用相同的拆分分隔符将字符串拆分为多个数据字段。你知道吗

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个字段。你知道吗


Tags: 数据字符串loop示例列表datastringresult
3条回答

像这样的?你知道吗

d={}
for item in data.split(','):
    if not item:
        continue
    l = list(item)
    d[''.join(l[0:2])]=''.join(l[2:])

如果您对d使用defaultdict,也可能会丢失键

这种方法的问题是,如果“key”不是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=重新编译(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

正如你所看到的注册汇率匹配的0404、0505、0606等不匹配。 如果数据=04004、05005等,则其工作。你知道吗

对工作有什么建议吗注册汇率 我的愿望是:

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

相关问题 更多 >