Python 如何修复代码以十六进制格式工作?

Python 如何修复代码以十六进制格式工作?,python,python-3.x,list,hex,Python,Python 3.x,List,Hex,帮助修复代码。我的脚本将列表中的坐标分为偶数和奇数,并且仅适用于十进制数字格式的列表,但我需要修复代码以使用十六进制格式的列表(十六进制数字格式) 我不太懂Python语言,但我需要添加函数hex(str) 下面是一个类似以下内容的列表list.txt (0x52DF625,0x47A406E) (0x3555F30,0x3323041) (0x326A573,0x5A5E578) (0x48F8EF7,0x98A4EF3) (0x578FE62,0x331DF3E) (0x3520CAD,0x

帮助修复代码。我的脚本将列表中的坐标分为偶数和奇数,并且仅适用于十进制数字格式的列表,但我需要修复代码以使用十六进制格式的列表(十六进制数字格式)

我不太懂Python语言,但我需要添加函数
hex(str)

下面是一个类似以下内容的列表list.txt

(0x52DF625,0x47A406E)
(0x3555F30,0x3323041)
(0x326A573,0x5A5E578)
(0x48F8EF7,0x98A4EF3)
(0x578FE62,0x331DF3E)
(0x3520CAD,0x1719BBB)
(0x506FC9F,0x40CF4A6)
Сode:

with open('List.txt') as fin,\
     open('Save+even.txt', 'a') as foutch,\
      open('Save-odd.txt', 'a') as foutnch:
    data = [line.strip() for line in fin]
    nch = [foutnch.write(str(i) + '\n') 
        for i in data if int(i[1:-1].split(',')[1]) % 2]
    ch = [foutch.write(str(i) + '\n') 
        for i in data if int(i[1:-1].split(',')[1]) % 2 != 1]
这可能适合您(我使用了
StringIO
而不是真实文件,但添加了一条注释,说明如何将其用于真实文件)

它输出:

odd
(0x3555F30,0x3323041)
(0x48F8EF7,0x98A4EF3)
(0x3520CAD,0x1719BBB)

even
(0x52DF625,0x47A406E)
(0x326A573,0x5A5E578)
(0x578FE62,0x331DF3E)
(0x506FC9F,0x40CF4A6)

技巧是在将十六进制字符串转换为int时使用base
0
int(x_str,0),
。请参阅。

由于list.txt文件重1GB,如何放置该文件的列表。我想将整个结果保存在两个文件中:“save+偶数.txt”/“save odd.txt”,如注释中所述:使用
for
循环中的
with
语句:
with open(“List.txt”)as in_file,open(“save even.txt”)as偶_file,open(“save odd.txt”)作为一个奇怪的文件:
并去掉所有的
StringIO
东西。这只是为了让我的示例变得独立。哦,输入文件的大小不是问题(在任何合理的最新硬件上,1GB不应该是问题);我从来没有完整地阅读过这个文件——我只是对它的行进行了迭代。我做了与您描述的相同的操作,但是我得到了一个错误:回溯(最近一次调用):文件“D:/script.py”,第8行,在偶数文件中。写入(行)io。不支持操作:不可写如何正确地描述代码?我在用蟒蛇3。像这样,你在这里问了几个问题,但你从来没有回答过。请继续阅读,您可能想签出
contextlib.ExitStack()
,以帮助清理
中的
。@JonSG我不知道。谢谢你提出来!我希望下次做类似的事情时能记得。。。
odd
(0x3555F30,0x3323041)
(0x48F8EF7,0x98A4EF3)
(0x3520CAD,0x1719BBB)

even
(0x52DF625,0x47A406E)
(0x326A573,0x5A5E578)
(0x578FE62,0x331DF3E)
(0x506FC9F,0x40CF4A6)