如何解决如何修复代码以十六进制格式工作?
帮助修复代码。我的脚本对列表中的偶数和奇数坐标进行排序,并且仅适用于十进制数字格式的列表,但我需要修复代码以使用 HEX 格式(十六进制数字格式)的列表
我不太了解Python语言,但我需要添加函数hex(str)
这是一个像这样的列表List.txt
(0x52DF625,0x47A406E)
(0x3555F30,0x3323041)
(0x326A573,0x5A5E578)
(0x48F8EF7,0x98A4EF3)
(0x578FE62,0x331DF3E)
(0x3520CAD,0x1719BBB)
(0x506FC9F,0x40CF4A6)
代码:
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
而不是真实文件 - 但添加了关于如何将其用于真实文件的评论)
in_file = StringIO("""(0x52DF625,0x47A406E)
(0x3555F30,0x3323041)
(0x326A573,0x5A5E578)
(0x48F8EF7,0x98A4EF3)
(0x578FE62,0x331DF3E)
(0x3520CAD,0x1719BBB)
(0x506FC9F,0x40CF4A6)
""")
even_file = StringIO()
odd_file = StringIO()
# with open( "List.txt") as in_file,open("Save-even.txt","w") as even_file,open("Save-odd.txt","w") as odd_file:
for line in in_file:
x_str,y_str = line.strip()[1:-1].split(",")
x,y = int(x_str,0),int(y_str,0)
if y & 1: # y is odd
odd_file.write(line)
else:
even_file.write(line)
print("odd")
print(odd_file.getvalue())
print("even")
print(even_file.getvalue())
它输出:
odd
(0x3555F30,0x3323041)
(0x48F8EF7,0x98A4EF3)
(0x3520CAD,0x1719BBB)
even
(0x52DF625,0x47A406E)
(0x326A573,0x5A5E578)
(0x578FE62,0x331DF3E)
(0x506FC9F,0x40CF4A6)
诀窍是在将十六进制字符串转换为 int 时使用基数 0
:int(x_str,
。见this answer。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。