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

Python中实现Bash seq功能及文档子串搜索替换的方法有哪些?

Python实现Bash seq功能的方法

Bash的seq核心作用是生成指定范围的连续序列,Python标准库即可实现等价功能:

  • 整数序列直接用内置range实现,注意range为左闭右开规则,对应关系如下:
    Bash命令Python等价写法输出结果
    seq 5range(1, 6)1、2、3、4、5
    seq 2 6range(2, 7)2、3、4、5、6
    seq 1 2 10range(1, 11, 2)1、3、5、7、9
    直接遍历range对象即可实现和bash循环完全一致的效果,转成列表可以用list(range(参数))。
  • 带格式补零的序列,配合f-string或format实现:
    比如bash的seq -f "%02g" 1 3对应[f"{i:02d}" for i in range(1,4)],输出为['01', '02', '03']。
  • 浮点数序列可以自定义生成器实现,不需要第三方依赖:
    def float_seq(start, end, step=1.0):
        current = start
        while current <= end:
            yield current
            current += step
    
    调用list(float_seq(1, 5, 0.5))即可得到步长为0.5的1到5浮点数序列。
匹配指定行并替换内容的实现方法

不需要额外第三方包,也不需要手动逐字符检查子串,Python标准库的字符串匹配、正则模块已经做了底层优化,直接调用即可:

处理小文件(内存足够容纳全文)

直接读取全文替换即可,代码最简:

import re

# 自定义替换值
new_val = "你的自定义内容"
with open("目标文件路径", "r", encoding="utf-8") as f:
    content = f.read()
# 匹配measurement = abc的位置,替换abc为自定义值
new_content = re.sub(r"(measurement\s*=\s*)abc", rf"\g<1>{new_val}", content)
with open("目标文件路径", "w", encoding="utf-8") as f:
    f.write(new_content)

如果不想用正则,也可以用format模板的方式,提前把目标行写成模板:

template = "measurement = {}"
# 匹配到目标行后直接替换整行
if "measurement = abc" in line:
    line = template.format(new_val)

处理大文件(避免占满内存)

逐行迭代处理即可,Python的文件迭代默认逐行读取,内存占用极低:

import os
import re

new_val = "你的自定义内容"
src_path = "目标文件路径"
tmp_path = f"{src_path}.tmp"

with open(src_path, "r", encoding="utf-8") as f_in, open(tmp_path, "w", encoding="utf-8") as f_out:
    for line in f_in:
        new_line = re.sub(r"(measurement\s*=\s*)abc", rf"\g<1>{new_val}", line)
        f_out.write(new_line)
# 替换原文件,不需要的话可以省略这步直接使用临时文件
os.replace(tmp_path, src_path)

不需要自己实现逐行逐字符的检查逻辑,内置方法的执行效率远高于手动实现的校验逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 15:24:03