You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中移除文本记录中的_x000D_

问题:无法移除Pandas DataFrame中的_x000D_字符

从Excel导入Pandas DataFrame后,某列数据示例如下:

Link
=========
A-324
A-76_x000D_\nA-676
A-95
A-95_x00D_n\nA-495
...

已通过正则移除了\n字符,但_x000D_始终无法删除,尝试过的代码:

dat['Link'] = dat['Link'].replace("_x000D_", " ")
dat['Link'] = dat['Link'].replace(r'\s+|\\n', ' ', regex=True) 

想了解:_x000D_是什么?为何常规移除方法无效?


解答

1. _x000D_是什么?

_x000D_是**Windows回车符(CR,ASCII编码为13)**的XML/HTML转义表示。当Excel单元格包含Windows风格换行(\r\n,即回车+换行)时,导入Pandas过程中可能被解析为这种转义字符串,而非直接的\r字符。

2. 常规移除方法无效的原因

你使用的replace("_x000D_", " ")是按字面量字符串匹配,但实际DataFrame中的内容可能并非真正的_x000D_,而是被解析后的\r(回车符)——只是在显示时被转成了_x000D_;另外,默认的replace不启用正则模式,若目标是正则匹配转义串,需要手动开启regex=True。

3. 正确的解决方法

方式一:直接匹配回车符\r

既然_x000D_对应实际的\r字符,直接替换\r更精准:

# 替换回车、换行符为空格,再合并多余空格
dat['Link'] = dat['Link'].replace(r'\r|\n', ' ', regex=True)
dat['Link'] = dat['Link'].replace(r'\s+', ' ', regex=True)

方式二:匹配字面量转义串

如果确认数据中是真实的_x000D_字符串,需开启正则模式替换:

dat['Link'] = dat['Link'].replace(r'_x000D_', ' ', regex=True)
dat['Link'] = dat['Link'].replace(r'\s+', ' ', regex=True)

合并写法(一次性处理所有情况)

dat['Link'] = dat['Link'].replace(r'_x000D_|\r|\n', ' ', regex=True).str.strip()

内容的提问来源于stack exchange,提问作者324

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 18:05:17