文本乱码,结果是十六进制数字,编码,解码问题

我在文本聚类时,将选好的文本词写入到TXT文本时发生了乱码的问题。具体下面这种情况:

就是将本本字符写到txt文本,txt文本是默认的ANSI,查了很多资料都说是编码格式的问题。

问题说明:文中的是十六进制,而且是bytes类型。

字符串的类型只有两种(str,bytes)。编码的方式有utf-8,GBK等等。利用encode(编码方式)将str型字符串变成bytes型字符串。decode(编码方式)就反过来。

下面看我的代码:

result = open(docPath,'a',encoding = 'utf-8')
for j in range(len(word)):
   #print(type(word[j]))
   result.write(str(word[j].encode('utf-8') + b' '))
   result.write('\r\n')

其中word[j]的内容是这样的      '一周', '一场', '一堆', '一种', '一秒', '一路', '万事开头难', '三元组',     典型的文本字符串。(word[j].encode('utf-8') + b' ')就是bytes型字符,没有转成str型,导致写入进去的时候就变成上图的结果(我也不知道为啥没转成)

然后我就改了循环里的代码

    for ci in (word):
        result.write(ci + ' ')
        result.write('\r\n')

结果txt文件中没有十六进制了,但是出现乱码的文字

想到txt文件默认的编码是ANSI模式,但是我open时的写文件方式是“utf-8”,显然解码与编码方式冲突,所以我就把encoding的方式去掉,让他默认

result = open(docPath, 'a')
    for ci in (word):
        result.write(ci + ' ')
        result.write('\r\n')

文本结果如下,问题就解决了:

总结哈,分析原理,根据原理找自己代码里的问题,真的得一步一步试试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值