gpt4 book ai didi

python - 用十进制替换文件中的所有十六进制

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:39 24 4
gpt4 key购买 nike

我想用 .sql 文件中的十进制等效值替换所有十六进制。

我有成千上万行像这样的行:

INSERT INTO TEST (TEST_ID, VEHICLE_ID, TEST_TYPE_ID, TYPE_ID, NUM_TEST, TEST_DATE, HOUR_START, HOUR_END, ....) VALUES (844, 504, 3, 1, 3, CAST(0x0000991400000000 AS DateTime), CAST(0x00009914008FC76C AS DateTime), CAST(0x0000991400906924 AS DateTime), ......);

我想用这个sql文件来创建一个SQLite数据库。但是 SQLite 不识别十六进制。所以目标是替换文件的所有十六进制。

我发现这个解决方案可以替换特定的十六进制:

decimal = int("0x0000991400000000", 0)

我发现这个解决方案可以用另一个单词替换所有出现的单词:

for line in fileinput.input():
line = re.sub('wordToReplace','newWord', line.rstrip())

我试图在第二个中使用第一个,但“newWord”正在执行一个字符串,而我给出的是一个整数。有什么方法可以做我想做的事?

感谢您的宝贵时间!

最佳答案

使用正则表达式替换函数:

import re

data = "INSERT INTO TEST (TEST_ID, VEHICLE_ID, TEST_TYPE_ID, TYPE_ID, NUM_TEST, TEST_DATE, HOUR_START, HOUR_END, ....) VALUES (844, 504, 3, 1, 3, CAST(0x0000991400000000 AS DateTime), CAST(0x00009914008FC76C AS DateTime), CAST(0x0000991400906924 AS DateTime), ......);"

data_dec = re.sub("(0x[\dA-F]+)",lambda m : str(int(m.group(1),16)),data)

print(data_dec)

结果:

INSERT INTO TEST (TEST_ID, VEHICLE_ID, TEST_TYPE_ID, TYPE_ID, NUM_TEST, TEST_DATE, HOUR_START, HOUR_END, ....) VALUES (844, 504, 3, 1, 3, CAST(168311178395648 AS DateTime), CAST(168311187818348 AS DateTime), CAST(168311187859748 AS DateTime), ......);

当找到十六进制数正则表达式 ("(0x[\dA-F]+)") 时,lambda 将以匹配项作为参数调用。取第一个也是唯一一个组,将其解析为 base-16 整数,然后将其转换回字符串。

关于python - 用十进制替换文件中的所有十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com