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

如何用Python在non/no与后续单词之间添加下划线?

在Python中为"non"/"no"与后续紧跟单词添加下划线的方法

核心方案:正则表达式 + Pandas 字符串替换

针对DataFrame中的文本内容,我们可以用正则表达式精准匹配"non"或"no"后跟单词字符的位置,然后在两者之间插入下划线。

代码示例

假设你的DataFrame有一个文本列text,处理代码如下:

import pandas as pd

# 模拟输入DataFrame
df = pd.DataFrame({
    'text': ['nonapple', 'nobanana', 'normal', 'nothing', 'no']
})

# 执行替换:在non/no和后续紧跟的字母间加下划线
df['text'] = df['text'].str.replace(r'(non|no)(?=[a-zA-Z])', r'\1_', regex=True)

# 查看结果
print(df)

正则表达式说明

  • (non|no):捕获分组,匹配"non"或"no"这两个前缀
  • (?=[a-zA-Z]):正向预查,确保前缀后面紧跟一个英文字母(保证是单词的起始部分)
  • r'\1_':将捕获到的前缀(\1对应第一个分组的内容)后面追加下划线

处理所有文本列

如果需要对DataFrame中所有文本列批量处理,可以结合applymap和re.sub:

import pandas as pd
import re

df = pd.DataFrame({
    'col1': ['noncar', 'nocat'],
    'col2': ['nonbook', 'notebook']
})

# 对所有字符串类型的单元格进行替换
df = df.applymap(lambda x: re.sub(r'(non|no)(?=[a-zA-Z])', r'\1_', x) if isinstance(x, str) else x)

适配带空格的场景

如果你的需求是处理"no apple"这类带空格的情况(即"non"/"no"和单词之间有空格),只需调整正则表达式:

df['text'] = df['text'].str.replace(r'(non|no)\s+(?=[a-zA-Z])', r'\1_', regex=True)

这里\s+匹配一个或多个空格,替换后会把空格换成下划线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:50:25