我想进行以下拆分:
input: 0x0000007c9226fc output: 7c9226fc
input: 0x000000007c90e8ab output: 7c90e8ab
input: 0x000000007c9220fc output: 7c9220fc
我使用以下代码行来执行此操作,但它不起作用!
split = element.rpartition('0')
我得到了这些错误的输出!
input: 0x000000007c90e8ab output: e8ab
input: 0x000000007c9220fc output: fc
这种分裂的最快方法是什么? 我现在唯一的想法是制作一个循环并执行检查,但这有点耗费时间。
我应该提一下输入中的零个数是不固定的。
答案 0 :(得分:5)
每个字符串都可以使用基数为16的int()
转换为整数。然后转换回字符串。
for s in '0x000000007c9226fc', '0x000000007c90e8ab', '0x000000007c9220fc':
print '%x' % int(s, 16)
输出
7c9226fc 7c90e8ab 7c9220fc
答案 1 :(得分:4)
input[2:].lstrip('0')
应该这样做。 [2:]
跳过前导0x
(我假设它始终在那里),然后lstrip('0')
从左侧删除所有零。
事实上,我们可以使用lstrip
功能删除多个主角来简化:
input.lstrip('x0')
答案 2 :(得分:1)
format对此非常方便:
>>> print '{:x}'.format(0x000000007c90e8ab)
7c90e8ab
>>> print '{:x}'.format(0x000000007c9220fc)
7c9220fc
答案 3 :(得分:0)
答案 4 :(得分:0)
如果字符串中的字符数是常量,那么您可以使用 以下代码。
input = "0x000000007c9226fc"
output = input[10:]
此外,由于您使用rpartition
defined作为
str.rpartition(sep)
在最后一次出现sep时拆分字符串,并返回包含分隔符之前的部分的3元组,分隔符本身以及分隔符之后的部分。如果找不到分隔符,则返回包含两个空字符串的3元组,后跟字符串本身。
由于您的输入可以有多个0,并且rpartition仅拆分最后一次出现,这是代码中的故障。
答案 5 :(得分:0)
0x00000
或其类型的正则表达式为(0x[0]+)
,而不是用空格替换它。
import re
st="0x000007c922433434000fc"
reg='(0x[0]+)'
rep=re.sub(reg, '',st)
print rep