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

使用Python为Pandas DataFrame文本插入HTML锚点标签

Python+Pandas实现文本前序词汇包裹HTML锚点方案

核心逻辑通过正则匹配保证截取位置落在完整单词末尾,逐行处理DataFrame的描述、链接两列,拼接符合要求的HTML锚点内容,代码可直接复用。

依赖导入

import pandas as pd
import re

核心处理函数

支持自定义锚点包裹的单词数量,自动适配短文本场景(总词数不足设定值时全量包裹,不会报错)。

def wrap_text_with_anchor(desc_text: str, target_url: str, wrap_word_num: int = 5) -> str:
    # 正则匹配文本开头指定数量的完整单词,自动忽略前后冗余空白
    match_pattern = rf'^(\s*(?:\b\w+\b\s*){{{wrap_word_num}}})'
    match_result = re.match(match_pattern, desc_text)
    
    # 文本总词数小于设定包裹数时,直接全量包裹进锚点
    if not match_result:
        return f'<a href="{target_url}"> {desc_text.strip()}</a>'
    
    # 拆分待包裹内容和剩余文本,按格式拼接
    wrapped_content = match_result.group(1).strip()
    remaining_content = desc_text[match_result.end():]
    return f'<a href="{target_url}"> {wrapped_content}</a>{remaining_content}'

DataFrame批量生成新列

调用apply逐行处理即可生成目标列:

# 替换为实际使用的DataFrame变量名
df['complete'] = df.apply(
    lambda row: wrap_text_with_anchor(row['description'], row['link']),
    axis=1
)

效果验证

使用问题给出的示例数据测试,输出完全符合预期:

test_desc = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation"""
test_link = "https://www.google.com"
print(wrap_text_with_anchor(test_desc, test_link))

输出结果:

<a href="https://www.google.com"> Lorem ipsum dolor sit amet</a>, consectetur adipiscing elit, 
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim 
veniam, quis nostrud exercitation

参数调整说明

  • 如需修改锚点包裹的单词数量,调用函数时传入wrap_word_num参数即可,比如要包裹前3个词就写wrap_text_with_anchor(desc, link, wrap_word_num=3)
  • 函数自动识别单词后的标点位置,不会把标点错误包裹进锚点标签内,也不会出现截断半个单词的问题
  • 如果需要适配中文等非英文文本,只需修改正则中\b\w+\b的单词匹配规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:06:42