加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

为什么python用乱码字符写入文件

发布时间:2020-12-20 12:22:40 所属栏目:Python 来源:网络整理
导读:我尝试 Problem 10在项目euler并通过,但我决定,如果我将所有素数低于200万到文本(.txt)文件,所以我继续,所以做了一些小的调整主要功能,解决了这个问题所以不只是将它添加到一个变量(tot)我写了一个由生成器生成的素数到一个文本文件,它最初工作但忘了在每个
我尝试 Problem 10在项目euler并通过,但我决定,如果我将所有素数低于200万到文本(.txt)文件,所以我继续,所以做了一些小的调整主要功能,解决了这个问题所以不只是将它添加到一个变量(tot)我写了一个由生成器生成的素数到一个文本文件,它最初工作但忘了在每个素数后添加空格,所以输出有点乱码

357111317192329313741434753

所以我修改了我的txt.write(str(next_prime))到txt.write(str(next_prime)”)

在稍作修改后,输出完全是胡言乱语

″‵??ㄠ″?ㄠ??㈠??????″

这是我的功能完整代码:

def solve_number_10():
    total = 2
    txt = open("output.txt","w")
    for next_prime in get_primes(3):
        if next_prime < 2000000:
            txt.write(str(next_prime) + ' ')
            #total += next_prime
        else:
            print "Data written to txt file"
            #print total
            txt.close()
            return

为什么会发生这种情况,我怎样才能使输出像

3 5 7 11 13 17 19

解决方法

这是Microsoft的记事本程序中的错误,而不是您的代码中的错误.

>>> a = '‵??ㄠ″?ㄠ??㈠??????'
>>> a.decode('UTF-8').encode('UTF-16LE')
'5 7 11 13 17 19 23 29 31 37 41 4'

哦,嘿,看,他们是素数(我假设4只是截断43).

您可以在记事本中解决该错误

>使用没有错误的其他文件查看器.
>将ZWNBSP写入文件的开头一次,以UTF-8编码:

txt.write(u'uFEFF'.encode('UTF-8'))

这被错误地称为BOM.它将是UTF-16的BOM,但从技术上讲,UTF-8不具备BOM.大多数程序忽略它,而在其他程序中它将是无害的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读