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

Python如何仅删除字符串中双引号包裹内容内的换行符

错误原因分析

你之前写的正则r'"\\n"'只能匹配到"\n"这种完全由双引号包裹单个换行符的内容,无法匹配双引号内部夹杂在普通文本之间的换行符,因此没有效果。

完整实现代码

首先你拿到的output_data是bytes类型,需要先解码为字符串再做正则处理:

import re

# 1. 将bytes转为字符串,编码可根据实际情况调整为gbk等
raw_text = output_data.decode("utf-8")

# 2. 替换所有双引号内部的换行符
def replace_newline_in_quote(match):
    # 取双引号包裹的内容,删除所有\n后再拼回双引号返回
    content_without_nl = match.group(1).replace("\n", "")
    # 如果你的文本里的\n是转义字符串(即显示为\\n),把上面的"\n"换成"\\n"即可
    return f'"{content_without_nl}"'

processed_text = re.sub(r'"(.*?)"', replace_newline_in_quote, raw_text, flags=re.DOTALL)

# 如果处理后需要转回bytes,执行下面的代码
# processed_bytes = processed_text.encode("utf-8")

逻辑说明

  • 正则r'"(.*?)"加re.DOTALL标记,可以匹配到所有成对双引号包裹的内容,.*?是非贪婪匹配,避免跨多对双引号匹配。
  • 每次匹配到双引号内容后,回调函数会仅对双引号内部的内容做换行符删除操作,不影响引号外的内容。

内容的提问来源于stack exchange,提问作者Chicken Sandwich No Pickles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:45:03