Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python字符串双重拆分?_Python_List_Sorting_Numbers - Fatal编程技术网

Python字符串双重拆分?

Python字符串双重拆分?,python,list,sorting,numbers,Python,List,Sorting,Numbers,这就是我的问题,我得到了一个像这样的字符串 01000200030004020511050006000702051108020511090205111002051111020511120205111300140205111500160017001800190020002100 然后我必须把它分割成这样的东西 [['01', 00], ['02', 00], ['03', 00], ['04', 020511], ['05', 00], ['06', 00], ['07', 020511, ['

这就是我的问题,我得到了一个像这样的字符串

01000200030004020511050006000702051108020511090205111002051111020511120205111300140205111500160017001800190020002100
然后我必须把它分割成这样的东西

[['01', 00], ['02', 00], ['03', 00], ['04', 020511], ['05', 00], ['06', 00], ['07', 020511, ['08', 020511], ['09', 020511], ['10', 020511,], ['11', 020511], ['12', 020511], ['13', 00], ['14', 020511], ['15', 00], ['16', 00], ['17', 00], ['18', 00], ['19', 00], ['20', 00], ['21', 00]]
['01', '02', '03', '0402051105', '06', '0702051108020511090205111', '20511110205111202051113', '1402051115', '16', '17', '18', '19', '2', '021', '']
所以首先我想让我们尝试使用split,也许这会奏效,所以这是我第一次尝试,结果就是这样

[['01', 00], ['02', 00], ['03', 00], ['04', 020511], ['05', 00], ['06', 00], ['07', 020511, ['08', 020511], ['09', 020511], ['10', 020511,], ['11', 020511], ['12', 020511], ['13', 00], ['14', 020511], ['15', 00], ['16', 00], ['17', 00], ['18', 00], ['19', 00], ['20', 00], ['21', 00]]
['01', '02', '03', '0402051105', '06', '0702051108020511090205111', '20511110205111202051113', '1402051115', '16', '17', '18', '19', '2', '021', '']
在那次失败之后,我对自己说,我将不得不拆分两次来去掉'00'和'020511',所以我使用了这种方法

re.split('020511|00', theStr)
用那种方法我把这个拿回来

['01', '02', '03', '04', '05', '06', '07', '08', '09', '1', '2051111', '12', '13', '14', '15', '16', '17', '18', '19', '2', '021', '']

但是它不是我想要的格式,也没有正确的显示出来,当我拆分它时,它只会去掉我所说的值,比如说“10”将显示为1,因为程序拆分了0,我不完全确定如何找到解决方案,所以非常感谢您的帮助。。谢谢。

您可以使用
re.findall()
查找长度为2、后跟
00
020511
的数字:

>>> re.findall('(\d{2})(020511|00)', theStr)
[('01', '00'), ('02', '00'), ('03', '00'), ('04', '020511'), ('05', '00'), ('06', '00'), ('07', '020511'), ('08', '020511'), ('09', '020511'), ('10', '020511'), ('11', '020511'), ('12', '020511'), ('13', '00'), ('14', '020511'), ('15', '00'), ('16', '00'), ('17', '00'), ('18', '00'), ('19', '00'), ('20', '00'), ('21', '00')]
>>> 
如果您希望在列表中显示结果,可以使用返回迭代器和列表理解的
re.finditer
,将相关组转换为列表:

>>> [list(i.group(1,2)) for i in re.finditer('(\d{2})(020511|00)', theStr)]
[['01', '00'], ['02', '00'], ['03', '00'], ['04', '020511'], ['05', '00'], ['06', '00'], ['07', '020511'], ['08', '020511'], ['09', '020511'], ['10', '020511'], ['11', '020511'], ['12', '020511'], ['13', '00'], ['14', '020511'], ['15', '00'], ['16', '00'], ['17', '00'], ['18', '00'], ['19', '00'], ['20', '00'], ['21', '00']]
>>> 

所以基本上,分隔符是一个递增的两位数?那是。。。奇怪的如果,比如说,你的
'04'
第二部分本身包含
'05'
?,例如
[04050611],[05,…]
?这是一个定义的编码吗?不,我不完全确定你刚才的意思,但在每一个01或02之后,或者无论什么,它只会上升到21,在那之后将是00或020511,我必须将它们组合在一起,比如说你会有01,让我们假设有两个00,然后我会像这样把它们分组['01',00]]我有一个印象,你在处理BCD编码的数字。如果这是真的,请先使用binascii.unhexlify。字符串已解码。它现在只是一个字符串中的数字,这会把它放入列表中吗?或者?@BSD_u这将返回一个
列表
元组
s。非常感谢大家。