- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试写入文件,但出现以下错误:
Traceback (most recent call last):
File "/private/var/folders/jv/9_sy0bn10mbdft1bk9t14qz40000gn/T/Cleanup At Startup/merge-395780681.888.py", line 151, in <module>
gc_all_d.writerow(row)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/csv.py", line 148, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0329' in position 5: ordinal not in range(128)
在我尝试将顾问数据库中的一行写入汇总他们姓名的文件后发生错误:
# compile master spreadsheet
with(open('gc_all.txt_3','w')) as gc_all:
gc_all_d = csv.DictWriter(gc_all, fieldnames = fieldnames, extrasaction='ignore', delimiter = '\t')
gc_all_d.writeheader()
for row in aicep_l:
print row['name']
gc_all_d.writerow(row)
for row in nbcc_l:
gc_all_d.writerow(row)
print row['name']
我在陌生的水域。我在 writerow() 方法中没有看到可以将编码范围扩大到这个字符 '\u0329' 的参数。
我认为该错误可能与我使用 nameparser 模块将所有辅导员的姓名组织成相同格式有关。从 nameparser 导入的 HumanName 函数可能会用前导“u”写出辅导员的名字以表示 unicode,这意味着无法识别总输出 u'Sam the Man' 而不是 'Sam the Man'。
感谢您的帮助!
根据答案修改后出现错误:
File "/private/var/folders/jv/9_sy0bn10mbdft1bk9t14qz40000gn/T/Cleanup At Startup/merge-395782963.700.py", line 153, in <module>
row['name'] = row['name'].encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 11: ordinal not in range(128)
使所有名称条目统一的代码:
# nbcc
with(open('/Users/samuelfinegold/Documents/noodle/gc/nbcc/nbcc_output.txt', 'rU')) as nbcc:
nbcc_d = csv.DictReader(nbcc, delimiter = '\t')
nbcc_l = []
for row in nbcc_d:
# name = HumanName(row['name'])
# row['name'] = name.title + ' ' + name.first + ' ' + name.middle + ' ' + name.last + ' ' + name.suffix
row['phone'] = row['phone'].translate(None, whitespace + punctuation)
nbcc_l.append(row)
修改后的代码:
# compile master spreadsheet
with(open('gc_all.txt_3','w')) as gc_all:
gc_all_d = csv.DictWriter(gc_all, fieldnames = fieldnames, extrasaction='ignore', delimiter = '\t')
gc_all_d.writeheader()
for row in nbcc_l:
row['name'] = row['name'].encode('utf-8')
gc_all_d.writerow(row)
错误:
Traceback (most recent call last):
File "/private/var/folders/jv/9_sy0bn10mbdft1bk9t14qz40000gn/T/Cleanup At Startup/merge-395784700.086.py", line 153, in <module>
row['name'] = row['name'].encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 11: ordinal not in range(128)
logout
最佳答案
来自docs :
This version of the csv module doesn’t support Unicode input. Also, there are currently some issues regarding ASCII NUL characters. Accordingly, all input should be UTF-8 or printable ASCII to be safe; see the examples in section Examples.
您需要在写入数据之前对其进行编码 - 例如:
for row in aicep_1:
print row['name']
for key, value in row.iteritems():
row[key] = value.encode('utf-8')
gc_all_d.writerow(row)
或者,由于您使用的是 2.7,您可以使用字典理解:
for row in aicep_1:
print row['name']
row = {key, value.encode('utf-8') for key, value in row.iteritems()}
或者在文档的示例页面上使用一些更复杂的模式。
关于python - 如何避免 unicodeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17708506/
我在 set() 中创建并填充了希腊名字,然后将这组值传递给 View 函数。 当我尝试打印这组希腊名字时,它们显示为乱码。我相信这与 Apache mod_wsgi 或 Bottle 不支持 utf
我正在尝试写入文件,但出现以下错误: Traceback (most recent call last): File "/private/var/folders/jv/9_sy0bn10mbdft
在我的代码中,我不断收到此错误... UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position 3
我有以下 Python 脚本: # -*- coding: utf-8 -*- import sys, locale locale.setlocale(locale.LC_ALL, 'en_US.ut
如果遇到 unicode 错误,有时很难找到问题的根源。这个字符串是从哪里来的? 有没有办法显示字符串(或部分错误字符串)? 最佳答案 您可以使用此代码段: try: html = html.
def openFile(fileName): try: trainFile = io.open(fileName,"r",encoding = "utf-8") ex
看完后:Dive into Python: Unicode Discussion 我很想尝试在 indic script 中打印我的名字。我正在使用 v2.7.2 - >>> import sys >
我正在尝试显示来自 firebird 3.x 数据库的结果,但得到: File "/...../Envs/pos/lib/python3.6/site-packages/fdb/fbcore.py",
我遇到了 Blockcypher for Python 的严重问题。一个简单的代码片段 import sys from blockcypher import get_address_overview
我正在使用 Django 的国际化功能为 Web 应用程序生成翻译字符串。 在我尝试调用 makemessages 时出现问题,现有语言 .po 文件包含特殊字符(例如 $ , £ 等)。 如果其中之
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2019' in position 26612: Body ('’') is
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2019' in position 26612: Body ('’') is
我正在编写一些需要同时使用 Py2.7 和 Py3.7+ 的代码。 我需要使用 UTF-8 编码将文本写入文件。我的代码如下所示: import six ... content = ... if is
我一直在使用 requests 包的 api 调用突然返回以下错误:“UnicodeError:使用‘idna’编解码器编码失败(UnicodeError:标签为空或太长)” 我不知道如何解决这个问题
import os from azure.storage.blob import BlockBlobService, baseblobservice from django.http import J
我是一名优秀的程序员,十分优秀!