为什么在python3中将int转换为字符串给我输出中文

时间:2018-02-03 04:56:51

标签: python debugging casting

首先我要说的是我不会说中文,也不会有任何理由让我的默认输出是中文的。那说这是我遇到过的最奇怪,最热闹的错误。

首先,我的代码应该计算长度为4的不同子串在DNA序列中重叠出现的次数。相关代码如下所示

#file containing data
f = open(infile, 'r')

#open an additional file to write output to
g = open("k-Mer output.txt", 'w')
#empty list
l=[]

#add lines of file to list
for line in f:
    l.append(line.strip())

d = {}
#adds every unique substring of four to my dict
for i in four_mer_maker():
    d[i] = 0

#l[1] is the sequence to be examined, assume it is all 1 line
#checks four letters, then shifts over one and checks those 4
for i in range(len(l[1]) - 3):
    d[l[1][i:i+4]] += 1

#now just write the ordered values to an output file
for i in sorted(d.items()):
    g.write(str(i[1])+ ' ')

我的文件完全乱码,看起来像这样

‴‱‴″‰‱‱‵‱″‱′′‱′‰‱‱″‱′‱
甚至更奇怪,我试着用输出稍微玩一下。只是改变

g.write(str(i[1])+ 'hello')

使我的输出看起来像这样。

栴汥潬栱汥潬栴汥潬栳汥潬栰汥潬栱汥潬栱

谷歌翻译说它的中文。到底发生了什么?

1 个答案:

答案 0 :(得分:1)

显然,记事本正在使用错误的BOM解释我的输出。像这样更改以下代码行

g = open("k-Mer output.txt", 'w')
g = open("k-Mer output.txt", 'w', encoding = 'utf16')

解决了这个问题。谢谢@ user202729