我想解码一个字符串
abc,1236,hg898,111112222,XXXX
格式如下
Format: pincode ,sid, xyz,DSP,4-Character code.
其他样本可以是这样的
abc1236hg898111112222XXXX
`
Format:
pincode=first 3 letters ,
sid = first next 4 letters,
xyz = next 5 letters,
DSP = next 9 letters,
4-Character code = last 4 letters.
即pincode = %3s sid = %4s xyz = %5s DSP = %9s 4-Charchode = %4s
`
所以基本上我想要一个通用函数,可以为我解码字符串格式。
所以,函数应该是
def string_decoder(string,format):
#return the dict having keys as format keys and values as their respective values
我该怎么做?
Python中是否存在内置函数?
答案 0 :(得分:2)
import re
match = re.match(r'''(.{3}),?
(.{4}),?
(.{5}),?
(.{9}),?
(.{4})''', string, flags=re.VERBOSE)
if match:
pin, sid, xyz, dsp, fourcharcode = match.groups()
else:
handle_error()
.{3}
表示3个任意字符。 ,?
表示可选的逗号。围绕.{3}
的括号将3个任意字符保存为捕获组。合并后,此正则表达式将输入字符串分为3个,4个,5个,9个和4个字符的组,可选地在它们之间使用逗号。
如果要将组的数量和大小指定为函数的参数,可以在运行时构建正则表达式:
def break_groups(string, *sizes):
regex = r',?'.join(r'(.{%d})' % size for size in sizes)
match = re.match(regex, string)
if match:
return match.groups()
else:
raise SomeSortOfError
答案 1 :(得分:0)
您可以在String上使用split函数 例如:
a="abc,1236,hg898,111112222,XXXX"
b=a.strip()
print b
b=[abc,1236,hg898,111112222,XXXX]
现在你可以通过索引获得价值
print b[0]
>>> abc
答案 2 :(得分:-1)
def string_decoder(string, format):
ret = {}
if len(string) == len(format):
for item in string:
ret[format] = string
else:
print 'input wrong!'