美好的一天,我有一个问题,每个人都可以将数据分成固定长度吗?
假设
data=2220591972004161833372381965973430564161832220599125418620936367891254212825967504230783108294828632042934883049336591444611742626636047927395221895991254390547243063380503905471**64**
我想分成三部分,例如:
d1=222059197200416183337238196597343056416183222059912541862093636789125421282596750423078310829482863204293488304933659144461174262663604792739522189599125439054724306338
d3=050390 >>>> length is 6
d4=5471 >>>>> length is 4
data is 64
的最后 2位数字用于确定 d3和d4的长度。
我已经看到很多拆分函数作为列表的示例,等等,但是这些都不是我想要的,例如here和here,有一个用C ++编写的程序我想要python here
另一个字符串数据以相同方式将数据分成几部分的示例,最后一位数字为x2
data2=cc32b326560de95d0fba47b5ad9072418f15caca4c39c2fe4db7003f4b8f81a79
x=cc32b326560de95d0fba47b5ad9072418f15caca4c39c2fe4db7003
x1=f4b8f81a7 >>>>length is 9
我正在使用python 3.6
间谍。谢谢大家
答案 0 :(得分:1)
假设data
是一个字符串,则可以使用以下函数,该函数采用data
和一个整数n
,该整数告诉您要从字符串末尾使用多少个字符。
def split(data, n):
indices = list(int(x) for x in data[-n:])
data = data[:-n]
rv = []
for i in indices[::-1]:
rv.append(data[-i:])
data=data[:-i]
rv.append(data)
return rv[::-1]
用法:
>>> split(data, 2)
['222059197200416183337238196597343056416183222059912541862093636789125421282596750423078310829482863204293488304933659144461174262663604792739522189599125439054724306338',
'050390',
'5471']
>>> split(data2, 1)
['cc32b326560de95d0fba47b5ad9072418f15caca4c39c2fe4db7003', 'f4b8f81a7']
如果您希望n
始终为2,只需按如下所示编辑函数:
def split(data):
indices = list(int(x) for x in data[-2:])
data = data[:-2]
rv = []
for i in indices[::-1]:
rv.append(data[-i:])
data=data[:-i]
rv.append(data)
return rv[::-1]
然后,您可以使用
来分配变量>>> d1, d2, d3 = split(data)
>>> d1
'222059197200416183337238196597343056416183222059912541862093636789125421282596750423078310829482863204293488304933659144461174262663604792739522189599125439054724306338'
>>> d2
'050390'
>>> d3
'5471'
答案 1 :(得分:1)
data=222059197200416183337238196597343056416183222059912541862093636789125421282596750423078310829482863204293488304933659144461174262663604792739522189599125439054724306338050390547164
data = str(data)
length_d3 = int(data[-1])
length_d2 = int(data[-2])
data = data[0:-2]
d1 = int(data[0:-(length_d3+length_d2)])
d2 = int(data[-(length_d3+length_d2):-length_d3])
d3 = int(data[-length_d3:])
print(d1)
print(d2)
print(d3)
答案 2 :(得分:0)
对于您提供的特定长度,这将正确分割它们
data="222059197200416183337238196597343056416183222059912541862093636789125421282596750423078310829482863204293488304933659144461174262663604792739522189599125439054724306338050390547164"
d1 = data[:-12] # From the start to 12 characters from the end
d3 = data[-12:-6] # From 12 characters from the end to 6 characters from the end
d4 = data[-6:-2] # From 6 characters from the end to 2 characters from the end