首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python脚本未编码为utf-8

python脚本未编码为utf-8
EN

Stack Overflow用户
提问于 2018-08-03 05:12:53
回答 2查看 298关注 0票数 0

我有这个Python3脚本来读取json文件并另存为csv。它工作得很好,除了像\u00e9这样的特殊字符。所以Montr\u00e9al应该像Montréal一样编码,但是它给了我Montréal

代码语言:javascript
复制
import json

ifilename = 'business.json'
ofilename = 'business.csv'

json_lines = [json.loads( l.strip() ) for l in open(ifilename).readlines() ]
OUT_FILE = open(ofilename, "w", newline='', encoding='utf-8')
root = csv.writer(OUT_FILE)
root.writerow(["business_id","name","neighborhood","address","city","state"])
json_no = 0
for l in json_lines:
    root.writerow([l["business_id"],l["name"],l["neighborhood"],l["address"],l["city"],l["state"]])
    json_no += 1

print('Finished {0} lines'.format(json_no))
OUT_FILE.close()
EN

回答 2

Stack Overflow用户

发布于 2018-08-03 05:58:09

事实证明,当用Notepad++打开csv文件时,csv文件显示正确,但用Excel打开它时显示不正确。因此,我必须使用Excel导入csv文件,并指定65001: Unicode (UTF-8)。谢谢你的帮助。

票数 1
EN

Stack Overflow用户

发布于 2018-08-03 05:18:06

尝试在文件的顶部使用此命令

代码语言:javascript
复制
# -*- coding: utf-8 -*-

考虑这个例子:

代码语言:javascript
复制
# -*- coding: utf-8 -*-    
import sys

print("my default encoding is : {0}".format(sys.getdefaultencoding()))
string_demo="Montréal"
print(string_demo)

reload(sys) # just in python2.x
sys.setdefaultencoding('UTF8') # just in python2.x

print("my default encoding is : {0}".format(sys.getdefaultencoding()))
print(str(string_demo.encode('utf8')), type(string_demo.encode('utf8')))

在我的例子中,如果我在python2.x中运行,输出如下所示:

代码语言:javascript
复制
my default encoding is : ascii
Montréal
my default encoding is : UTF8
('Montr\xc3\xa9al', <type 'str'>)

但是当我注释掉reload和setdefaultencoding行时,我的输出是这样的:

代码语言:javascript
复制
my default encoding is : ascii
Montréal
my default encoding is : ascii
Traceback (most recent call last):
  File "test.py", line 12, in <module>
    print(str(string_demo.encode('utf8')), type(string_demo.encode('utf8')))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)

最大的问题是编辑器,Python在发生编码错误时会引发异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51662228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档