我有一个csv文件,其中包含两列数据。数据为十进制格式。
我正在尝试将数据转换为十六进制格式,然后将其连接起来。
当column2中的数据不为零时,我能够进行转换和连接。
例如: Column1 = 52281 和 Column2 = 49152 ,那么我就能获得 CC39C000 。 (hex(52281)= CC39和hex(49152)= C000)。
但是,如果Column2中的数据为零:-
Column1 = 52281 和 Column2 = 0 ,那么我得到的是 CC390 而不是 CC390000 。
以下是我的代码段:-
file=open( inputFile, 'r')
reader = csv.reader(file)
for line in reader:
col1,col2=int(line[0]),int(line[1])
newstr = '{:x}'.format(col1)+'{:x}'.format(col2)
当column2中的数据为0时,我期望得到0000。
我如何修改我的代码以实现这一目标?
答案 0 :(得分:1)
如果有
a=52281
b=0
您可以转换yo十六进制并计算最长的字符串以填充零
hex_a = hex(a)[2:] # [2:] removes the trailing 0x you might want to use [3:] if you have negative numbers
hex_b = hex(b)[2:]
longest=max(len(hex_a), len(hex_b))
然后您可以使用zfill
方法填充0:
print(hex_a.zfill(longest) + hex_b.zfill(longest))
如果只需要4个字符,则可以执行zfill(4)
如果我尝试修改您的代码,由于我无权访问该文件,因此很难测试,
file=open( inputFile, 'r')
reader = csv.reader(file)
for line in reader:
col1,col2=int(line[0]),int(line[1])
hex_col1 = hex(col1)[2:] if col1>=0 else hex(col1)[3:]
hex_col2 = hex(col2)[2:] if col2>=0 else hex(col2)[3:]
longest = max(len(hex_col1), len(hex_col2))
newstr = hex_col1.zfill(longest) + hex_col2.zfill(longest)