python 文本移除控制字符

devtools/2024/10/18 6:12:41/

在 Python 中,控制字符通常指 ASCII 范围内的不可打印字符(例如,字符编码在 0 到 31 之间)。这些字符包括换行符、制表符、回车符等。我们可以使用正则表达式或者 str.translate() 函数来去除文本中的控制字符。

方法 1: 使用正则表达式去除控制字符

python">import redef remove_control_chars(text):"""去除字符串中的控制字符。参数:text (str): 输入的字符串,可能包含控制字符。返回:str: 去除了控制字符的字符串。"""# 匹配 ASCII 控制字符(范围从 \x00 到 \x1F 和 \x7F)control_char_re = re.compile(r'[\x00-\x1F\x7F]+')# 将控制字符替换为空字符串return control_char_re.sub('', text)# 示例
input_text = "Example text with control characters:\x01\x02\x03Hello\x04World\x05!"# 移除控制字符
cleaned_text = remove_control_chars(input_text)# 输出结果
print(f"原始文本: {input_text}")
print(f"去除控制字符后的文本: {cleaned_text}")

方法 2: 使用 str.translate()string 模块

str.translate() 函数可以通过映射表来删除特定的字符。我们可以创建一个映射表来删除 ASCII 控制字符。

python">import stringdef remove_control_chars(text):"""使用 translate 去除字符串中的控制字符。参数:text (str): 输入的字符串,可能包含控制字符。返回:str: 去除了控制字符的字符串。"""# 生成控制字符的集合(包括 \x00 到 \x1F 和 \x7F)control_chars = ''.join(map(chr, range(0, 32))) + chr(127)# 创建用于删除这些控制字符的转换表translation_table = str.maketrans('', '', control_chars)# 移除控制字符return text.translate(translation_table)# 示例
input_text = "Control characters:\x01\x02Hello\x03\x04World\x05!"# 移除控制字符
cleaned_text = remove_control_chars(input_text)# 输出结果
print(f"原始文本: {input_text}")
print(f"去除控制字符后的文本: {cleaned_text}")

代码解释

  1. 方法 1: 使用正则表达式

    • 正则表达式 [\x00-\x1F\x7F]+ 匹配 ASCII 控制字符的范围(\x00\x1F\x7F,这些字符包括非打印字符)。
    • re.sub 用于将这些匹配到的控制字符替换为空字符串。
  2. 方法 2: 使用 str.translate()

    • 使用 chr() 函数生成 ASCII 控制字符的集合。
    • str.maketrans('', '', control_chars) 创建了一个转换表,用于删除指定的控制字符。
    • str.translate() 用于根据该转换表从文本中删除这些字符。

输出示例

原始文本: Control characters:HelloWorld!
去除控制字符后的文本: Control characters:HelloWorld!

这两种方法都可以有效去除文本中的控制字符,适用于清理文件或字符串数据中的无效字符。


http://www.ppmy.cn/devtools/118166.html

相关文章

算法题——滑动窗口(图示+代码)

什么时候可以使用滑动窗口? 当我们尝试对一条题目进行暴力插解时,若发现 一、长度最小的子数组 题目链接:. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程…

安卓好软-----手机屏幕自动点击工具 无需root权限

工具可以设置后自动点击屏幕。可以用于一些操作。例如自动刷视频等等哦 工具介绍 一款可以帮你实现自动操作的软件。软件中你可以根据实际需要设置点击位置,可以是屏幕上的特定位置,也可以是按钮或控件。功能非常强大,但是操作非常简单&…

powerbi-L8-导入数据时候的动态列

背景: 在数据导入之后刷新的过程中出现了无法刷新的异常报错, 检查后发现是由于原始数据的列的名字变化导致了power BI在处理数据类型的时候 需求 处理方法是什么, ? 方法 动态获取表格的列: 获取数据的时候&#xff…

【python】数据爬虫,抓取并分析豆瓣电影信息

url-lib-request模块获取HTML spider.py 网页下载,链接提取,数据存储 http请求: 网址url, http-header: (1)用户代理;(2)浏览器版本 网页下载用 urllib库。 # 将豆瓣电影top250的第一页下载import urllib.request …

记录:ubuntu20.04的安装和必要的开发准备

记录ubuntu20.04的安装和必要的开发准备 准备1. 安装ubuntu20.04时的Tips2. 屏幕亮度调节问题3. 解决 "No Wi-Fi Adapter Found"4. Nvidia Driver && cuda5. 修改安装源6. ssh 远程开发7. 安装 anaconda 准备 没有装双系统,只有 ubuntu20.04&…

Mysql的锁你了解哪些?

MySQL中的锁是用于控制多个用户对共享资源的并发访问,以确保数据的完整性和一致性。 一、按锁的性质分类 1. 乐观锁(Optimistic Locking) • 假设并发操作时不会发生冲突,只在提交事务时检查数据是否被其他事务修改过。 • 适用…

【Redis】分布式锁之 Redission

一、基于setnx实现的分布式锁问题 重入问题:获得锁的线程应能再次进入相同锁的代码块,可重入锁能防止死锁。例如在HashTable中,方法用synchronized修饰,若在一个方法内调用另一个方法,不可重入会导致死锁。而synchroni…

如何在Mac上查看剪贴板历史记录

重点摘要 macOS 内建的剪贴簿查看器可以透过 Finder 存取,但只能显示最近一次复制的内容,而且重新开机后就会清除。若要更进阶的剪贴簿管理,第三方 app 像是 CleanClip 提供了强大的功能和更好的组织方式。CleanClip 提供了全方位的剪贴簿历史管理解决方案,支援各种内容类型和…