unicodecsv 读取器从 unicode 字符串无法正常工作?

2023-11-29

我在将 unicode CSV 字符串读入 python-unicodescv 时遇到问题:

>>> import unicodecsv, StringIO
>>> f = StringIO.StringIO(u'é,é')
>>> r = unicodecsv.reader(f, encoding='utf-8')
>>> row = r.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/guy/test/.env/lib/python2.7/site-packages/unicodecsv/__init__.py", line 101, in next
    row = self.reader.next()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)

我猜这是我如何将 unicode 字符串转换为 StringIO 文件的问题? python-unicodecsv github 页面上的示例运行良好:

>>> import unicodecsv
>>> from cStringIO import StringIO
>>> f = StringIO()
>>> w = unicodecsv.writer(f, encoding='utf-8')
>>> w.writerow((u'é', u'ñ'))
>>> f.seek(0)
>>> r = unicodecsv.reader(f, encoding='utf-8')
>>> row = r.next()
>>> print row[0], row[1]
é ñ

使用 cStringIO 尝试我的代码失败,因为 cStringIO 无法接受 unicode (所以为什么这个示例有效,我不知道!)

>>> from cStringIO import StringIO
>>> f = StringIO(u'é')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)

我需要接受来自 Web 文本区域表单字段的 UTF-8 CSV 格式的输入,因此不能只从文件中读入。

有任何想法吗?


The unicodecsv文件读取和解码字节串为你。你正在通过它unicode字符串代替。在输出时,您的 unicode 值将使用配置的编解码器编码为字节字符串。

此外,cStringIO.StringIO只能处理编码的字节串,而纯PythonStringIO.StringIO班级愉快地对待unicode值就好像它们是字节字符串一样。

解决办法是encode在将它们放入之前你的unicode值StringIO object:

>>> import unicodecsv, StringIO, cStringIO
>>> f = StringIO.StringIO(u'é,é'.encode('utf8'))
>>> r = unicodecsv.reader(f, encoding='utf-8')
>>> next(r)
[u'\xe9', u'\xe9']
>>> f = cStringIO.StringIO(u'é,é'.encode('utf8'))
>>> r = unicodecsv.reader(f, encoding='utf-8')
>>> next(r)
[u'\xe9', u'\xe9']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unicodecsv 读取器从 unicode 字符串无法正常工作? 的相关文章

  • Python - 比较同一字典中的值

    我有一本字典 d Trump MAGA FollowTheMoney Clinton dems Clinton Stein FollowTheMoney Atlanta 我想删除字符串列表中的重复字符串 该字符串是键的值 对于这个例子 期望
  • 计算另一个字符串中多个字符串的出现次数

    在 Python 2 7 中 给定以下字符串 Spot是一只棕色的狗 斑点有棕色的头发 斑点的头发是棕色的 查找字符串中 Spot brown 和 hair 总数的最佳方法是什么 在示例中 它将返回 8 我正在寻找类似的东西string c
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • Mysql插入表后不显示右单引号(’)

    我有一个名为 测试 的表 我插入了一行 其中包含unicode字符右单引号 0x2019在名称字段中 SQL insert into Testing values Sno Name Address insert into Testing v
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • 如何使用 PrimaryKeyRelatedField 更新多对多关系上的类别

    Django Rest 框架有一个主键相关字段 http www django rest framework org api guide relations primarykeyrelatedfield其中列出了我的 IDmany to m
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • 如何隐藏iOS状态下录音时的红条?

    我使用AVAudioRecorder来录制语音 我发现有时当我分配它并开始录音时 状态栏下会出现一个红色条 就像您在后台调用时的红色条 如何隐藏它 你不能那样做 每个应用程序 包括内置的语音备忘录应用程序 在使用麦克风时都会有该栏
  • 通过 JAXB 解组读取自定义 XML 处理指令

    通过 JAXB 解组时有没有办法读取自定义 xml 处理指令 例子
  • 更快的 UIImage - Base64 转换

    我正在做的工作必须在之间进行编码和解码UIImage和 Base 64 字符串 这对于较小的图像非常有效 向前和向后转换只需不到 1 秒 但当我将其应用于较大的图像时 需要很长时间 几乎一分钟 有没有其他方法来编码和解码UIImage对象字
  • 调用 ffmpeg.c 的 main 两次导致应用程序崩溃

    使用 FFmpeg 4 0 2 并调用它ffmpeg c s main函数两次导致 Android 应用程序崩溃 使用 FFmpeg 共享库和 JNI A libc Fatal signal 11 SIGSEGV code 1 fault
  • 使用通用参数作为端口数组长度

    我想做的事 entity FIRfilter is generic NTAPS integer port h in array 0 to NTAPS 1 of std logic vector 15 downto 0 end FIRfitl
  • 基于数据库数组PHP自动检查复选框

    在我的页面的 用户设置 选项卡中 我希望用户确定特定用户发布的帖子类型 表格如下
  • Spark独立模式和本地模式有什么区别?

    Spark独立模式和本地模式有什么区别 Spark Standalone是一个可以在集群上工作的资源管理器 它只是内置的资源管理器 而不是像纱线这样的外部资源管理器 Spark本地运行无需任何资源管理器 一切都在单个jvm中运行 您可以决定
  • Java 同步方法...不同步

    对于我当前的 java 练习 我必须从 2 个不同的 Gmail 帐户获取邮件 我通过创建 Gmail 类的新实例来完成此操作 gmail 类扩展了线程 其中有一个同步方法 readMail 用于获取邮件并打印它 这个 readMail 方
  • 使用 NLog 将记录器名称写入 Excel 文件

    感谢 Rolf 在这个问题中的评论 NLog 在 C 中具有严重性和类别 我能够将日志消息的类别 例如 热 或 数据库 或 机械 记录到文本文件中 我只需将名称传递给 GetLogger 方法即可完成此操作 public MainWindo
  • Mongoimport 带有字符串 _id 和 upsert 的 csv 文件

    我正在尝试使用 mongoimport 来更新插入 id 中带有字符串值的数据 由于 id 看起来像整数 即使它们在引号中 因此 mongoimport 将它们视为整数并创建新记录 而不是更新插入现有记录 我正在运行的命令 mongoimp
  • Android GPU 分析 - OpenGL 动态壁纸速度很慢

    我正在使用 OpenGL ES 3 0 开发动态壁纸 我已经根据优秀教程进行了设置http www learnopengles com how to use opengl es 2 in an android live wallpaper
  • 如何在 NestJS 中处理 RpcException

    我正在尝试构建一个包含多个微服务的 NestJS 后端和一个作为与微服务通信的网关的 REST API 对于网关和微服务之间的通信 我使用 gRPC 简单的通信已经可以工作 但现在我想在微服务中实现错误处理 NestJS 文档指出 这可以通
  • RecyclerView 查看项目

    我想在 RecyclerView 中显示 2 列 但它们显示在 1 列中 如下图所示 如何在两列中显示我的视图 我在我的代码中尝试了两列 rcv pro setLayoutManager new GridLayoutManager this
  • 如何在无需用户交互且仅通过客户端 ID 和密码的情况下验证我的 Quickbook Intuit api 访问?

    我正在开发一个项目 其中后台 crons 创建发票 我想将它们添加到我在后端创建的 Quickbook 帐户中 所以问题是我想仅使用客户端 ID 和秘密参与来访问 api 如何在无需用户交互且仅通过客户端 ID 和密码的情况下验证我的 Qu
  • 有没有办法在使用 ES6 简写方法表示法的方法中使用词法 `this` ?

    关于SO的第一个问题 我希望我没有重复任何内容 我看过other 问题并认为我的不同足以值得询问 基本上 有没有办法让this它位于使用速记符号编写的方法的方法主体中 或者是词法的 或者是绑定到特定值的 这样做的动机来自于我在实现时想要使用
  • 如何指定 JSON 对象应采用哪一个 oneOf 项?

    使用Python和jsonschema我正在尝试验证分配ObjA or ObjB等等beta test json alpha beta ObjA 在我的架构中 testschema json beta is oneOf多个项目 每个项目定义
  • Selenium-IDE:如何验证/断言页面刷新

    我的页面上有一个链接 单击该链接会刷新此页面 如何使用 Selenium IDE 验证页面是否确实已刷新 重新加载 我通过断言页面上最初存在的元素在刷新后不存在于页面上来解决这个问题 然后等到页面完全刷新 并断言该元素再次存在 刷新并等待
  • React router dom 中的链接不会加载页面,仅 url 浏览器导航会更改

    React router dom v5 和 React 16 我的加载应用程序组件包含 ReactDOM render
  • 如何通过 Android 应用程序编辑日历事件

    我如何通过 Android 应用程序编辑日历中的日历事件 任何人都知道如何在日历应用程序中打开议程活动 从日历中读取数据后 试试这个 将单次事件添加到日历 要将条目添加到特定日历 我们需要使用 ContentValues 配置要插入的日历条
  • unicodecsv 读取器从 unicode 字符串无法正常工作?

    我在将 unicode CSV 字符串读入 python unicodescv 时遇到问题 gt gt gt import unicodecsv StringIO gt gt gt f StringIO StringIO u gt gt g