迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中将 Unicode 转换为 ASCII

作者:迹忆客 最近更新:2023/06/29 浏览次数:

通过本文,我们将学习如何将 Unicode 编码为字节,了解系统编码的不同方法以及在 Python 中将 Unicode 转换为 ASCII。


在 Python 中将 Unicode 转换为 ASCII

Python 3 字符串的基本问题是由字符组成的; Python 中没有字符类型,但它们包含 Unicode 字符。

如果我们说 a = 'abcd' 并使用 len() 函数检查它的长度,那么我们得到 4 并且我们声明 s='שלום' 意思是你好,这是希伯来语中的单词。 这些长度是相同的,这很好,因为两个变量都有四个字符。

>>a='abcd'
>>len(a)
4
>>s='שלום'
>>len(s)
4

事实上,幕后是不同的字节数与这里的问题无关,len() 测量的是字符数,而不是字节数,但当然,在幕后,UTF-8 Unicode 字符和 UTF-8 编码使用更多字节。

那么我们如何将字符串转换为我们需要的字节呢? 好吧,我们可以使用 s.encode(),如果我们这样做,它会返回一个字节字符串,该字符串将是我们创建希伯来语单词 שלום 所需的八个字节。

>>s.encode()
b'\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d'
>>'abcd'.encode()
b'abcd'

现在我们将获取一个 Unicode 字符串并将其转换为字节字符串,但它比这更复杂,因为我们知道这个字符串是什么,并且我们想要取回不代表 Unicode 底层字节的字节。 我们想要取回不同编码系统的底层字节。

例如,我们使用 iso-8859-8,这是您可能听说过的一种在西欧广泛使用的编码类型,它允许我们在一个字节中包含特定语言所需的所有不同字符 ,所以如果我们需要将一个字符串转换为非 Unicode 的编码。

>>s.encode('iso-8859-8')
b'\xf9\xec\xe5\xed'

让我们看看如果我们有来自不同语言的东西会发生什么,就像我们说 s='北京' 就是北京,如果我们对其进行编码,那么我们会得到一个字节字符串。

我们看到这里有六个字节,因为每个汉字都由三个字节表示; 这是我们使用 UTF-8 进行的可变长度编码。

>>s='北京'
>>s.encode()
b'\xe5\x8c\x97\xe4\xba\xac'

现在我们想使用 iso-8859-8 对 北京 进行编码,当我们执行此操作时,我们会得到 UnicodeEncodeError,这意味着编码告诉我们您想要获取这些 Unicode 字符并将它们转换为 iso-8859 的字节 -8 不允许的编码。

s.encode('iso-8859-8')

UnicodeEncodeError

如果我们用这个连接英语单词,它也会失败,因为任何地方我们可能有错误,它都会失败,但我们可以添加一个参数来帮助忽略错误。

>>s='I often go to 北京'
>>s.encode('iso-8859-8',errors='ignore')
b'I often go to '

如果您有一大堆文本并且可以丢失 Unicode 字符,则可以使用此选项。

让我们看一下默认情况下等于 strict 的 help(s.encode),但它可以是一些不同的东西,所以如果我们使用替换值来错误,它并不真正知道如何替换,所以它 只是要使用问号。

help(s.encode)

Help on encode

>>s='I often go to 北京'
>>s.encode('iso-8859-8',errors='replace')
b'I often go to ??'

当我们使用 xmlcharrefreplace 时,我们会返回与这些 Unicode 字符有关的 XML 实体,因此如果您要将其粘贴到 XML 文档或 HTML 中,那么这将起作用。

>>s.encode('iso-8859-8',errors='xmlcharrefreplace')
b'I often go to 北京'

这取决于您的需求; 如果您将 Unicode 字符转换为字节,这是典型的情况,因为您将通过网络发送它们,或者您正在处理某种其他类型的编码系统。

如果您是初学者并且不想详细介绍,请使用以下命令安装名为 unidecode 的 Python 包。

它将直接将 Unicode 转换为 ASCII; 当您使用需要将 Unicode 转换为 ASCII 的应用程序时,它会很有帮助。

>>pip install unidecode
>>>from unidecode import unidecode
>>>unidecode(u'北京')
'Bei Jing'

上一篇:从 Python 程序中运行 PowerShell 脚本

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

从 Python 程序中运行 PowerShell 脚本

发布时间:2023/06/29 浏览次数:89 分类:Python

本文将重点讨论从 Python 代码执行 PowerShell 逻辑。Python subprocess.Popen()方法 在Python中,可以使用 subprocess.Popen() 方法执行外部程序。

解决 Python中错误 Overflow Encountered in Double_Scalars

发布时间:2023/06/29 浏览次数:120 分类:Python

通常,这些数字的大小变得如此之大,以至于程序进入溢出状态并显示警告 overflow encountered in double_scalars。 本文将解释双标量中的溢出、导致此问题的某种情况以及如何解决它。

解决 C++ 中错误 Python.h: No Such File or Directory

发布时间:2023/06/29 浏览次数:95 分类:Python

本文将解释如何解决错误 'Python.h': No such file or directory。 当我们尝试在 C++ 中嵌入 Python 代码,但编译器无法在系统内部找到对 Python 的引用时,通常会发生这种情况。C++ 中 'Python.h': No such file

使用 Pickle 在 Python 中保存和加载对象

发布时间:2023/06/29 浏览次数:67 分类:Python

本文演示了如何在 Python 中保存和重新加载对象。 我们还将了解如何使用 Python 进行 Pickling 和 Unpickling。 此外,我们将看到 Pickling 的优点和缺点。

Python中defaultdict的使用

发布时间:2023/06/29 浏览次数:126 分类:Python

今天的文章讨论 defaultdict 容器并使用代码示例演示其用法。Python 中的 defaultdict 与 dict defaultdict 是一个类似字典的容器,属于 collections 模块。

Python 中的 with 语句

发布时间:2023/06/29 浏览次数:83 分类:Python

本篇文章将介绍with语句的功能及其在Python中的应用。在Python中使用with语句 该语句本质上用于帮助处理异常并在使用资源时清理资源。 它确保代码正确执行并随后清理资源。

Python 单步执行代码

发布时间:2023/06/29 浏览次数:145 分类:Python

在本文中,我们将讨论使用 Python 调试器单步调试代码。 我们将从头开始解释一个名为 PDB 的命令行工具。 我们还将学习如何在 Python IDLE 的帮助下逐步执行代码。

Python 编辑距离

发布时间:2023/06/29 浏览次数:67 分类:Python

今天,我们将学习Python中的编辑距离。 我们还将探讨字符串的插入、删除、替换和递归实现。在 Python 中编辑距离 编辑距离是将一个字符串转置为另一个字符串所需的量。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便