美丽的汤和 Unicode 问题

2023-11-24

我正在使用 BeautifulSoup 来解析一些网页。

有时我会遇到如下“unicode hell”错误:

在 TheAtlantic.com 上查看这篇文章的来源 [http://www.theatlantic.com/education/archive/2013/10/why-are-hundreds-of-harvard-students-stuying-ancient-chinese-philosophy/280356/ ]

我们在 og:description 元属性中看到这一点:

<meta property="og:description" content="The professor who teaches&nbsp;Classical Chinese Ethical and Political Theory claims, &quot;This course will change your life.&quot;" />

当 BeautifulSoup 解析它时,我看到这个:

>>> print repr(description)
u'The professor who teaches\xa0Classical Chinese Ethical and Political Theory claims, "This course will change your life."'

如果我尝试将其编码为 UTF-8 ,就像这个评论建议的那样:https://stackoverflow.com/a/10996267/442650

>>> print repr(description.encode('utf8'))
'The professor who teaches\xc2\xa0Classical Chinese Ethical and Political Theory claims, "This course will change your life."'

正当我以为我已经控制了所有的 unicode 问题时,我仍然不太明白发生了什么,所以我将提出几个问题:

1-为什么BeautifulSoup要转换&nbsp; to \xa0[拉丁字符集空格字符]?此页面上的字符集和标题是 UTF-8,我认为 BeautifulSoup 会提取该数据进行编码?为什么不将其替换为<space> ?

2-是否有一种通用的方法来规范转换的空格?

3-当我编码为 UTF8 时,在哪里\xa0成为序列\xc2\xa0 ?

我可以通过管道传输一切unicodedata.normalize('NFKD',string)帮助我到达我想去的地方 - 但我很想了解问题所在并避免将来出现类似问题。


您没有遇到问题。一切都按预期进行。

&nbsp;表示一个不间断空格字符。它不会被替换为空格,因为它不代表空格;它代表一个不间断的空间。用空格替换它会丢失信息:在该空格出现的地方,文本渲染引擎不应放置换行符。

不间断空格的 Unicode 代码点是 U+00A0,在 Python 中以 Unicode 字符串形式编写为\xa0.

The UTF-8U+00A0 的编码是十六进制的两个字节序列 C2 A0,或者用 Python 字符串表示形式编写,\xc2\xa0。在 UTF-8 中,任何超出 7 位 ASCII 集的内容都需要两个或更多字节来表示。在这种情况下,最高位组是第八位。这意味着它可以用两字节序列(二进制)表示110xxxxx 10xxxxxx其中 x 是代码点的二进制表示形式的位。对于A0的情况,即10000000,或者以 UTF-8 编码时,11000010 10000000或 C2 A0。

很多人都用&nbsp;在 HTML 中获取不会被通常的 HTML 空白折叠规则折叠的空格(在 HTML 中,所有连续的空格、制表符和换行符都会被解释为单个空格,除非其中之一)CSS white-space rules被应用),但这并不是它们真正的目的;它们应该用于名字之类的东西,比如“Mr. Miyagi”,你不希望“Mr.”之间有换行符。和“宫城”。我不确定为什么在这个特殊情况下使用它;它在这里似乎不合适,但这更多是您的源代码的问题,而不是解释它的代码的问题。

现在,如果您并不真正关心布局,因此您不介意文本布局算法是否选择它作为换行位置,但只想将其解释为常规空间,那么使用 NFKD 进行规范化是完全合理的答案(或者 NFKC,如果您更喜欢预先组合的口音而不是分解的口音)。这NFKC 和 NFKD 标准化映射字符,以便扩展在大多数上下文中表示本质上相同语义值的大多数字符。例如,连字扩展为 (ffi -> ffi),古式长 s 字符转换为 s (ſ -> s),罗马数字字符扩展为其单独的字母 (IV -> IV),以及不间断空格转换成正常空间。对于某些字符,NFKC 或 NFKD 标准化可能会丢失在某些上下文中重要的信息: ℌ 和 ℍ 都会标准化为 H,但在数学文本中可用于指代不同的事物。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

美丽的汤和 Unicode 问题 的相关文章

  • 如何在多进程系统中实现锁定?

    我们正在并行运行许多詹金斯项目 我们使用 python 并且选择使用 pyenv 管理虚拟环境 不幸的是 pyenv 有一个众所周知的竞争条件 https github com yyuu pyenv issues 174 为了解决这个问题
  • 如何使用 Python 3 绕过 HTTP Error 403: Forbidden with urllib.request

    您好 不是每次都这样 但有时在尝试访问 LSE 代码时 我会收到每一个烦人的 HTTP 错误 403 禁止消息 任何人都知道我如何仅使用标准 python 模块来克服这个问题 遗憾的是没有漂亮的汤 import urllib request
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • Virtualenv 在 OS X Yosemite 上失败并出现 OSError

    我最近更新到 OSX Yosemite 现在无法使用virtualenv pip 每当我执行 virtualenv env 它抛出一个 OSError Command Users administrator ux env bin pytho
  • 使用 django-rest-framework 设置对象级权限

    尝试使用 django rest framework 最干净 最规范地管理 django guardian 对象级权限 我想将对象的读取权限 module view object 分配给在执行 POST 时发出请求的用户 我的基于阶级的观点
  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 从 Azure ML 实验中访问 Azure Blob 存储

    Azure ML 实验提供了通过以下方式读取 CSV 文件并将其写入 Azure Blob 存储的方法 Reader and Writer模块 但是 我需要将 JSON 文件写入 blob 存储 由于没有模块可以执行此操作 因此我尝试在Ex
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • 如何过滤 Pandas GroupBy 对象并获取 GroupBy 对象?

    当对 Pandas groupby 操作的结果执行过滤时 它返回一个数据帧 但假设我想执行进一步的分组计算 我必须再次调用 groupby 这似乎有点绕 有更惯用的方法吗 EDIT 为了说明我在说什么 我们无耻地从 Pandas 文档中窃取
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • 如何确保 re.findall() 停止在正确的位置?

    这是我的代码 a import re re findall r lt title gt lt title gt a 结果是 title aaa
  • Arcpy 模数在 Pycharm 中不显示

    如何将 Arcpy 集成到 Pycharm 中 我尝试通过导入模块但它没有显示 我确实知道该模块仅适用于 2 x python arcpy 在 PyPi Python 包索引 上不可用 因此无法通过 pip 安装 要使用 arcpy 您需要
  • Spark 和 Python 使用自定义文件格式/生成器作为 RDD 的输入

    我想问一下 Spark 中输入的可能性 我可以看到从http spark apache org docs latest programming guide html http spark apache org docs latest pro
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • 检测是否从psycopg2游标获取?

    假设我执行以下命令 insert into hello username values me 我跑起来就像 cursor fetchall 我收到以下错误 psycopg2 ProgrammingError no results to fe
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐

  • 使用 TypeScript 和注入的 AngularJS 过滤器

    有人可以给我提供一个示例 说明如何在 TypeScript 中创建使用依赖注入的 Angular 过滤器 底部是我目前拥有的 工作正常 但我想做的是我想要访问 filter 的函数 以便我可以将 return date ToString 行
  • 如何将 TRC20 交易发送到某个地址

    我正在使用 tron web 查询某个地址的交易 但它不会返回发送到该地址的交易 其中传输的代币为 TRC20 这是行不通的 我想获取某个地址上的交易并获取 TRX trc10 和 trc20 交易 我做错了什么或者该怎么做 这是我的代码块
  • 如何使用 JDBC 执行 .sql 脚本文件[重复]

    这个问题在这里已经有答案了 可能的重复 使用 MySQL 和 JDBC 运行 sql 脚本 我有一个 SQL 脚本文件 其中包含 40 50 个 SQL 语句 是否可以使用 JDBC 运行此脚本文件 此链接可能会帮助您 http paste
  • np.empty 与 np.zeros 的速度

    我正在使用 numpy 版本 1 14 3 和 python 2 7 12 参考文献this问题 我发现使用 np zeros 和 np empty 初始化数组之间的速度显着不同 但是 输出是相同的 import numpy as np r
  • 修改 ASP.NET 服务器端的 html 输出

    第三方的webcontrol生成以下代码来显示自己 div div
  • 如何在管道步骤中使用 Jenkins 侧边栏链接插件?

    我正在开发这个插件https plugins jenkins io sidebar link 在詹金斯侧栏中添加链接 该插件与 jenkins 项目配置一起使用 现在我正在尝试添加一个管道步骤来调用此插件 我已经尝试过下面的代码行 但它不起
  • Apache HttpClient 制作多部分表单帖子

    我对 HttpClient 很陌生 而且我发现缺乏 和 或明显不正确 文档非常令人沮丧 我正在尝试使用 Apache Http Client 实现以下帖子 如下所列 但不知道如何实际执行 下周我将埋头于文档中 但也许更有经验的 HttpCl
  • 在 Python 3 中使用 XPath 解析 XML

    我有以下 xml
  • 使用 Stream 并关闭流时出现错误的 WebFaultException

    我们有一个使用 WCF 构建的 REST API 我们使用 WebFaultException 处理所有后端异常 如下所示 throw new WebFaultException
  • 在 Maven 项目中包含非 Java 源

    我正在开始一个项目 我预计该项目将包含大量非 Java 代码 主要是 shell 和 SQL 脚本 我仍然想用 Maven 来管理这个项目 非 Java 源代码和 Maven 的最佳实践是什么 源码应该去哪里 它们在生命周期的不同阶段会发生
  • Google Visualization 堆叠条形图中的标签值和总计

    I am trying to display the value of each bar and then the total value of all bars in a stacked bar chart The problem is
  • 异常:应通过 PYTHONHASHSEED 禁用字符串哈希的随机性在 pyspark 中意味着什么?

    我正在尝试从 pyspark 中的列表创建字典 我有以下列表 rawPositions Gives 1009794 LPF6 Comdty BC22 Enterprise 3 0 3904 125 390412 5 1009794 LPF6
  • 逐步寻找 Activiti Alfresco Workflow 教程 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在哪里可以找到 Activiti Alfresco 工作流程 尤其是自定义工作流程 的简单教程 我是 Alfresco Activiti Worf
  • 在 ASP.NET vNext 中,为什么代码不即时重新编译?

    我正在使用 k web 从命令行运行 HelloMvc 示例应用程序 我尝试使用 kvm use runtime 使用可用的不同环境来运行它 当我更改控制器并在浏览器中按 F5 或 Ctrl F5 时 代码不会自动重新编译 页面也不会更改
  • 使用Java遍历到最深处

    我有一个如下的数据结构 Task id name subTasks Task 但问题是子任务可以包含具有另一个子任务的任务 这可以运行得很深 如下所示 Task1 Contains SubTask1 SubTask1 包含其子任务 你可以理
  • 如果我声明为空白页(strict_types=1);在 PHP 7 中位于文件顶部

    最近我正在查看 PHP 7 特别是返回类型声明 and 类型提示 我已经从源代码编译了 PHP 7 来自Github 并在 Ubuntu 14 04 虚拟盒中运行它 我尝试运行以下代码来测试新的例外情况 但它给出了一个空白页
  • 熊猫合并df错误

    我有 3 个数据框正在尝试合并到 pandas 中 一个有 20 列 另外两个各有 2 列 它们的组织方式如下 eth price head n 3 Out 6 time eth price 0 8 28 17 16 19 344 021
  • 区分两个数组中的额外元素?

    我的一位朋友在接受采访时被问到这个问题 您已给出两个整数数组 每个数组的大小为 10 两者都包含 9 个相等的元素 比如 1 到 9 只有一个元素不同 你将如何找到不同的元素 您可以采取哪些不同的方法 一种简单但冗长的方法是 对两个数组进行
  • 创建 clickonce webdeploy 包

    是否可以构建一个包含可使用标准 webdeploy 工具部署到 Web 服务器的 clickonce 应用程序的 Web 部署包 这是理想的过程 MSBuild YourFullyQualifiedProjectName csproj vb
  • 美丽的汤和 Unicode 问题

    我正在使用 BeautifulSoup 来解析一些网页 有时我会遇到如下 unicode hell 错误 在 TheAtlantic com 上查看这篇文章的来源 http www theatlantic com education arc