python unicodedata 处理Unicode 字符串

Python实用技法第28篇:将Unicode文本统一表示为规范形式 1、需求 阅读详情

你正在处理 Unicode 字符串,需要确保所有字符串在底层有相同的表示。

# -*- coding: utf-8 -*-

# 你正在处理 Unicode 字符串,需要确保所有字符串在底层有相同的表示。

# 在 Unicode 中,某些字符能够用多个合法的编码表示。为了说明,考虑下面的这个例子:

s1 = 'Spicy Jalape\u00f1o'
s2 = 'Spicy Jalapen\u0303o'
print(s1)
print(s2)

print(s1 == s2)

# 这里的文本”Spicy Jalapeño” 使用了两种形式来表示。第一种使用整体字符”ñ”(U
# +00F1),第二种使用拉丁字母”n” 后面跟一个”˜” 的组合字符 (U+0303)。

# 在需要比较字符串的程序中使用字符的多种表示会产生问题。为了修正这个问题,
# 你可以使用 unicodedata 模块先将文本标准化:
import unicodedata

t1 = unicodedata.normalize('NFC', s1)
t2 = unicodedata.normalize('NFC', s2)
print(t1)
print(t2)

print(t1 == t2)

t3 = unicodedata.normalize('NFD', s1)
t4 = unicodedata.normalize('NFD', s2)

print(t3)
print(t4)
print(t3 == t4)

print(ascii(t3))

# normalize() 第一个参数指定字符串标准化的方式。 NFC 表示字符应该是整体组
# 成 (比如可能的话就使用单一编码),而 NFD 表示字符应该分解为多个组合字符表示。

# Python 同样支持扩展的标准化形式 NFKC 和 NFKD,它们在处理某些字符的时候
# 增加了额外的兼容特性。比如:

s = '\ufb01'
print(s)

print(unicodedata.normalize('NFD', s))
print(unicodedata.normalize('NFKD', s))
print(unicodedata.normalize('NFKC', s))

# 标准化对于任何需要以一致的方式处理 Unicode 文本的程序都是非常重要的。当处
# 理来自用户输入的字符串而你很难去控制编码的时候尤其如此。

# 在清理和过滤文本的时候字符的标准化也是很重要的。比如,假设你想清除掉一些
# 文本上面的变音符的时候 (可能是为了搜索和匹配):

t1 = unicodedata.normalize('NFD', s1)
print(''.join(c for c in t1 if not unicodedata.combining(c)))

# 最后一个例子展示了 unicodedata 模块的另一个重要方面,也就是测试字符类的
# 工具函数。 combining() 函数可以测试一个字符是否为和音字符。在这个模块中还有
# 其他函数用于查找字符类别,测试是否为数字字符等等。

# Unicode 显然是一个很大的主题。如果想更深入的了解关于标准化方面的信息,请
# 看考 Unicode 官网中关于这部分的说明 Ned Batchelder 在 他的网站 上对 Python 的
# Unicode 处理问题也有一个很好的介绍。





Win11上WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置 本文详细介绍了在Win11系统上安装和配置WSL2及Ubuntu22.04开发环境的完整流程与避坑指南。内容涵盖从解决网络安装错误、更换国内镜像源以加速软件更新,到一站式配置C++开发工具链(包括GCC、GDB、CMake等),并提供了提升WSL2使用体验的实用技巧和故障排除方法,帮助开发者高效搭建稳定的Linux开发环境。 阅读详情

相关推荐

ADS中使用Momentum进行电源完整性分析示例

这个应用可以帮助工程师用更快的时间使用ADS Momentum完成PDN分析。该应用描述了利用ADS Momentum RF模拟器进行PDN分析的方法,大大缩短了计算时间。 该分析主要应用与高速数字设计。 在此应用中使用了以下ADS特性: ADS设计流程集成(ADFI)。 电磁协同仿真。 Momentum仿真。 仿真流程如下: 在Allegro中创建ADFI文件 要将Alleg...

zb6075_lb的专栏 7007

Python字符串处理:从基础replace到正则表达式与Unicode的标点符号去除全解析

在文本处理与数据清洗中,字符串操作是基础且关键的技术环节。其核心原理在于对字符序列的识别、匹配与替换,以实现数据的标准化与净化。掌握高效的字符串处理技术,能显著提升后续自然语言处理、特征提取等任务的准确性与效率,广泛应用于社交媒体分析、日志解析、搜索优化等场景。本文聚焦于Python中去除标点符号这一常见需求,深入剖析了从简单的`str.replace()`、高效的`str.translate()`,到灵活强大的正则表达式`re.sub()`,乃至基于`unicodedata`的Unicode精准处理等多种

weixin_34375251的博客 434

MATLAB实战:64QAM通信系统仿真全流程解析(附误码率优化技巧)

本文提供了一份完整的64QAM通信系统MATLAB仿真实践指南。从系统架构设计、发射端格雷码映射与脉冲成形,到信道建模、接收端同步与均衡,详细解析了全链路实现流程。文章重点分享了误码率曲线与理论值偏差的排查清单和深度优化技巧,帮助工程师构建工业级精度的仿真模型,解决高阶调制系统仿真的核心难题。

jenkins8butler的博客 404

unicodedata库

是 Python 标准库中的一个模块,它提供了一些有关 Unicode 字符的信息和处理功能。这个模块允许你执行各种与 Unicode 字符相关的操作,例如字符规范化、字符分类、字符名称查询等。模块在处理 Unicode 字符时非常有用,特别是在国际化应用和文本处理中。它允许你操作和查询字符的各种属性,以确保正确的文本处理和字符显示。

szial的专栏 765

1.安装EMQX服务器

阿里云;EMQX

hfh8130的博客 5311

基于YOLOv8与UI界面的校园垃圾分类督导系统

YOLO(You Only Look Once)是目前最为广泛使用的目标检测算法之一。它通过一次前向传递即完成目标检测,具有极高的速度与效率。YOLOv8是YOLO系列的最新版本,相比于之前的YOLO版本,YOLOv8在速度、精度、检测能力等方面都有了显著的提升。本项目通过结合YOLOv8模型与UI界面,成功实现了校园垃圾分类督导系统。该系统能够自动识别不同类型的垃圾,并通过UI界面实时展示垃圾分类的结果。

YOLO 337

unicodedata模块

文章目录lookupnamedecimaldigitnumericcategorycombiningeast_asian_widthmirroreddecompositionnormalize参考 UCD是Unicode字符数据库(Unicode Character DataBase)的缩写。 UCD由一些描述Unicode字符属性和内部关系的纯文本或html文件组成。 UCD中的文本文件大都是适合于程序分析的Unicode相关数据。其中的html文件解释了数据库的组织,数据的格式和含义。 UCD中最庞大的

炫云云 2713

第五节_PySide6基本窗口控件_主窗口和标签

本文介绍了PySide6中主窗口和标签控件的使用。主要内容包括: 窗口控件分类: QWidget是基础窗口部件,可作为独立窗口或子部件 QMainWindow提供标准应用程序框架,包含菜单栏、工具栏等 QDialog用于对话框,支持模态交互 主窗口创建: 演示了如何创建QMainWindow子类 实现了窗口居中、设置图标、状态栏等功能 提供了窗口几何信息的获取方法 QLabel标签控件: 继承自QFrame类 用于显示文本或图像 文章通过代码示例详细说明了主窗口的创建和使用方法,包括位置控制、图标设置等常见

su桥木的博客 1021

unicodedata Unicode 数据库 查询Unicode信息 字符转换 特殊字符处理 示例 总结——《跟老吕学Python编程》

模块作为Python的Unicode数据库接口,为处理多语言文本提供了强大的支持。通过它,我们可以方便地查询Unicode字符的信息、进行字符转换和特殊字符处理。对于需要进行国际化开发的Python项目来说,模块是不可或缺的工具。👨‍💻博主Python老吕评论,您的举手之劳将对我提供了无限的写作动力!🤞🔥《跟老吕学Python编程》《Python游戏开发实战讲解》《Python Web开发实战》《Python网络爬虫实战》《Python APP开发实战》🌐《HTML》《CSS》《Vue》💻。

Python老吕的博客 1650

Monorepo与pnpm:前端项目管理的完美搭档

pnpm又称 performant npm,翻译过来就是高性能的npm。Monorepo是一种项目开发与管理的策略模式,它代表"单一代码仓库"(Monolithic Repository)。在Monorepo模式中,所有相关的项目和组件都被存储在一个统一的代码仓库中,而不是分散在多个独立的代码仓库中,这些项目之间还可能会有依赖关系。

m0_68271787的博客 2562

MATLAB计算各种复合干热指数,如SDHI、DHMI等

MATLAB编程实现各种复合干热指数

WW、forever的博客 5079

python unicodedata模块

python unicodedata模块 ‘bidirectional’, ‘category’, ‘combining’, ‘decimal’, ‘decomposition’, ‘digit’, ‘east_asian_width’, ‘lookup’, ‘mirrored’, ‘name’, ‘normalize’, ‘numeric’, ‘ucd_3_2_0’, ‘ucnhash_CAPI’, ‘unidata_version’ ...

chenliang1038的博客 533

25、量子计算:中性原子与约瑟夫森结量子比特

本文详细探讨了中性原子和约瑟夫森结两种量子比特在量子计算中的应用。中性原子量子比特利用光晶格实现量子态的操控,具有长相干时间的优势,但面临可扩展性和多量子比特操作的挑战;而约瑟夫森结量子比特基于超导技术,结合半导体制造工艺,具有低耗散和潜在的高可扩展性,但在参数控制和环境干扰方面存在难题。文章还比较了这两种方案的性能、应用场景及未来发展趋势,展望了它们在量子计算发展中的潜力与突破方向。

ol789012的博客 212

Python 库手册:unicodedata Unicode 字符处理模块

unicodedata 是 Python 提供的 Unicode 数据处理模块,支持访问字符的 Unicode 编码属性,如名称、分类、数字值、标准化形式等。与 decimal() 类似,但更宽松。字符按功能分组,如字母 (L)、数字 (N)、标点符号 (P)、符号 (S) 等。返回字符的通用分类(General Category),如大写字母、标点、符号等。form:字符串,取值为 'NFC'、'NFD'、'NFKC'、'NFKD'字符串,如 'Lu'(大写字母),'Nd'(数字),'Zs'(空格)等。

qq_41176800的博客 1377

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Python  unicodedata.normalize 将Unicode文本标准化

将Unicode文本标准化 问题 你正在处理Unicode字符串,需要确保所有字符串在底层有相同的表示。 解决方案 在Unicode中,某些字符能够用多个合法的编码表示。为了说明,考虑下面的这个例子: >>> s1 = 'Spicy Jalape\u00f1o' >>> s2 = 'Spicy Jalapen\u0303o' >>&gt...

Through Da Storm 8990

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

unicodedata.normalize ——Unicode文本标准化

将Unicode文本标准化 问题 在处理Unicode字符串,需要确保所有字符串在底层有相同的表示。 解决方案 在Unicode中,某些字符能够用多个合法的编码表示。为了说明,考虑下面的这个例子: >>> s1 = 'Spicy Jalape\u00f1o' >>> s2 = 'Spicy Jalapen\u0303o' >>> s1 'Spicy Jalapeño' >>> s2 'Spicy Jalapeño' &gt.

种花家的奋斗兔的博客 3713

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

unicodedata文本标准化处理

https://yiyibooks.cn/xx/python_352/library/unicodedata.html

384

python中isdigit函数什么意思_python判断字符串,str函数isdigit、isdecimal、isnumeric的区别...

s为字符串s.isalnum() 所有字符都是数字或者字母s.isalpha() 所有字符都是字母s.isdigit() 所有字符都是数字s.islower() 所有字符都是小写s.isupper() 所有字符都是大写s.istitle() 所有单词都是首字母大写,像标题s.isspace() 所有字符都是空白字符、、、判断是整数还是浮点数a=123b=123.123>>>isinstance(a...

weixin_39998903的博客 6268

[00109]将Unicode文本标准化

将Unicode文本标准化一、 解决问题 处理Unicode字符串,需要确保所有字符串在底层有相同的表示 二、解决方案 unicodedata 模块 三、代码说明#!/usr/bin/env pythons1 = 'Spicy Jalape\u00f1o' s2 = 'Spicy Jalapen\u0303o' print(s1) #->Spicy Jalapeño print(s2) #-

语言小蛀虫 790

将Unicode编码为plain ASCII

def unicodeToAscii(s): return ''.join( c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn' and c in all_letters )

guofei_fly的博客 501

Python3 实例--Python 判断字符串是否为数字

#代码如下: #import sys chapter23:Python3 标准库概览 #print("\nchapter23:Python3 标准库概览\n") #Python3 实例–Python 判断字符串是否为数字 #print(“Python3 实例–Python 判断字符串是否为数字”) def isnumber(x): try: float(x) return True except ...

qq_33410995的博客 597

Python 文本字符串清理

文章目录文本字符串清理删除字符串中多余的字符[1]^{[1]}[1]strip()、lstrip()、rstrip()清洗文本字符串str.translate()[2]^{[2]}[2]unicodedata 模块unicodedata.normalize()[3]^{[3]}[3]encode() 和 decode()参考资料来源 文本字符串清理 由于收集来源的问题(比如,表单文本数据录入错误...

"大梦三千秋的博客 4740

python判断是否包含数字7_python判断字符串是否为数字

以下实例通过创建自定义函数is_number()方法来判断字符串是否为数字:#-*-coding:UTF-8-*-#Filename:test.py#authorby:www.runoob.comdefis_number(s):try:float(s)returnTrueexceptValueError:passtry:importunicodedataunico...

weixin_39974882的博客 1165

unicodedata 字符处理例子

>>> import unicodedata >>> import sys >>> cmb_chrs = dict.fromkeys(c for c in range(sys.maxunicode) ... if unicodedata.combining(chr(c))) ... >>> b = unicodedata.normalize('NFD', a) >>> b

github_39605284的博客 522

Python标准库参考-String Services(3)

地址:http://docs.python.org/library/strings.html8.9 unicodedata2009年6月6日7:42:53Unicode字符的数据库,可以通过字符取名字,通过名字取字符等等。例如:#取得名字>>> import unicodedata>>> s = unicodedata.name(u-)>>> print s

346
上一篇: python3 fnmatch和fnmatchcase
下一篇: 个人 shell总结
MZP_man
博客等级 码龄8年 188粉丝 145原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值