以特定长度分割字符串和整数python

时间:2020-01-30 11:13:26

标签: python python-3.x string split python-3.6

美好的一天,我有一个问题,每个人都可以将数据分成固定长度吗?

假设

data=2220591972004161833372381965973430564161832220599125418620936367891254212825967504230783108294828632042934883049336591444611742626636047927395221895991254390547243063380503905471**64**

我想分成三部分,例如:

d1=222059197200416183337238196597343056416183222059912541862093636789125421282596750423078310829482863204293488304933659144461174262663604792739522189599125439054724306338

d3=050390 >>>> length is 6

d4=5471 >>>>> length is 4

data is 64的最后 2位数字用于确定 d3和d4的长度

我已经看到很多拆分函数作为列表的示例,等等,但是这些都不是我想要的,例如herehere,有一个用C ++编写的程序我想要python here

另一个字符串数据以相同方式将数据分成几部分的示例,最后一位数字为x2

data2=cc32b326560de95d0fba47b5ad9072418f15caca4c39c2fe4db7003f4b8f81a79
x=cc32b326560de95d0fba47b5ad9072418f15caca4c39c2fe4db7003
x1=f4b8f81a7 >>>>length is 9 

我正在使用python 3.6间谍。谢谢大家

3 个答案:

答案 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