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

如何清理NsLookup输出结果中的\r、\n及\r\n\r\n等转义换行字符

问题根因
  • subprocess.check_output()默认返回bytes类型对象,直接传入字符串参数调用strip()类型不匹配,无法生效
  • strip()只能去除字符串首尾的指定字符,无法清理内容中间的换行、回车符
  • 原代码遍历对象错误:创建csv.DictReader后直接遍历csvfile会拿到原始行文本,而非结构化的行数据,会导致nslookup查询参数错误
具体实现方案

方案1:完全清除所有换行、回车符,输出合并为单行

import os
import subprocess
import socket
import datetime
import re
import csv
import pprint

with open('NewData.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    # 请将下方的'domain'替换为你CSV文件中存储查询目标(域名/IP)的列名
    for row in reader:
        query_target = row['domain'].strip()
        proc = subprocess.check_output(['nslookup', query_target])
        # 字节转字符串,Windows系统出现乱码时可将utf-8替换为gbk
        res_str = proc.decode('utf-8', errors='ignore')
        # 替换所有\r、\n字符为空格
        cleaned_res = res_str.replace('\r', '').replace('\n', ' ')
        print(cleaned_res)

方案2:保留正常换行,仅清除多余的连续空行

如果需要保留Server、Address等字段的换行分隔,只删除末尾多余的\r\n\r\n空行,可使用以下清理逻辑替换上面的清理代码:

# 合并连续的换行、回车为单个换行,再去除首尾空白
cleaned_res = re.sub(r'[\r\n]+', '\n', res_str).strip()
补充说明

如果仅需要去除首尾的空行,不需要修改中间内容,解码后直接调用strip()即可:

cleaned_res = proc.decode('utf-8', errors='ignore').strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:15:02