【发布时间】:2017-11-10 11:18:37
【问题描述】:
我将详细描述我的问题:
首先我从 CSV 文件中读取一些值:
def import_csv(my_csv_file):
with open(my_file, mode='r') as infile:
reader = csv.reader(infile)
next(reader) # Ignore the first row
return dict((rows[0]+struct.pack('!L',int(rows[1])), [rows[2],rows[3]]) for rows in reader)
那我称这个函数为:
DB = import_csv(my_csv_file)
my_csv_file 中的每一行都具有以下格式:
40.1.1.2,1,\x00123,bbbbbbbbbbbbbbbb
导入后,我得到 dict 的一个元素:
value = DB['40.1.1.2\x00\x00\x00\x01'][0]
但现在我需要将 value(包含字符串 \x00123)转换为其 ASCII 等价物,其中任何两个以 \x 为前缀的字符都表示一个 HEX 值。也就是说,对于上面的例子,我想要
\x00123 = 00313233
我已尝试使用 binascii.hexlify 命令,但这给了我读取字符串中 每个字符 的 ASCII 等价物,即:
binascii.hexlify(值) = 5c783030313233
如果我这样做:
value_0 = '\x00123'
print binascii.hexlify(value_0)
我得到了想要的结果,即 00313233。所以似乎在从文件中读取值之后,十六进制转义字符 \x 被视为字符串中的值。请注意,包括例如\x00 部分是在我将从文件中读取的值中包含不可打印的字符。
有什么方法可以做我想做的事吗?谢谢!
【问题讨论】: