Python在文本中每2个字符进行一次热编码
我有一个自定义字母表,因为字典由2个字母键和相应的十进制值组成。我基本上想用这个字母表对文本中的每2个字符进行编码。文本不能超出给定的字母表,因此手动定义文本比较安全。以下是我到目前为止所做的Python在文本中每2个字符进行一次热编码,python,dictionary,text,slice,one-hot-encoding,Python,Dictionary,Text,Slice,One Hot Encoding,我有一个自定义字母表,因为字典由2个字母键和相应的十进制值组成。我基本上想用这个字母表对文本中的每2个字符进行编码。文本不能超出给定的字母表,因此手动定义文本比较安全。以下是我到目前为止所做的 values = {'00' : 0.0, '01': 1.0, '02':2.0, '03':3.0, '04':4.0, '05':5.0, '06':6.0, '07':7.0, '08':8.0, '09':9.0, '0a':10, '0b':11, '0c':12, '0d':13, '0e'
values = {'00' : 0.0, '01': 1.0, '02':2.0, '03':3.0, '04':4.0, '05':5.0, '06':6.0, '07':7.0, '08':8.0, '09':9.0, '0a':10, '0b':11, '0c':12, '0d':13, '0e':14}
sample = '000a'
indexes = [values[ch:ch+2] for ch in range(0,len(sample),2)]
输出应该是0.010
但是,通过运行此命令,我得到了不可损坏的类型:“slice”类型错误
是否有另一种方法可以迭代文本中的每两项并用字典中的值替换它们?或者,对于超过20G+的文本文件,什么是实现这一点的最佳方法 这与您在示例中描述的相同:
values = {'00' : 0.0, '01': 1.0, '02':2.0, '03':3.0, '04':4.0, '05':5.0, '06':6.0, '07':7.0, '08':8.0, '09':9.0, '0a':10, '0b':11, '0c':12, '0d':13, '0e':14}
sample = '000a'
indexes = ''.join(str(values[sample[ch:ch+2]]) for ch in range(0,len(sample),2))
我想你错过了
示例[:]
中的值
键…你是说十六进制到整数的转换吗?值
是一本字典。在你的列表中,你正在做一些类似于值[0:2]
-我想你的意思是:[value[sample[ch:ch+2]]用于范围(0,len(sample),2)]
。然后使用str.join
将列表元素连接成字符串。@WillemVanOnsem Yes。它是十六进制到整数,但十六进制值在数据集中被视为字符串类型。@pault Yeap。这就成功了。