开发者社区> 问答> 正文

用不同值替换字符串的所有出现的最通用方法

我有文本文件(FILE),内部是4个文件的组合(file_f1,file_f2,file_f3,file_f4)。

分隔不同文件的分隔符是字符串“ stackoverflow”,该字符串取决于文件数(例如:如果FILE是3个文件的组合,则该字符串出现3次)。FILE当前出现4个字符串'stackoverflow'

vals = ['f1','f2','f3','f4']

vals是从文件名中提取的列表。(如果FILE是3个文件的组合,则val将具有3个字符串)

我试图用vals [i]代替“ stackoverflow”的出现。

下面是我的代码,仅用vals [0]代替了所有“ stackoverflow”的出现。

with open(os.path.join(file),'r') as fh:
        data=fh.readlines()

        for line in data:
            for i in range(len(vals)):
                if "stackoverflow" in line:
                    line= re.sub('stackoverflow',vals[i], line)

我尝试了以下计数器方法

count=1
for line in data:
    if 'stackoverflow' in line:
        if count==1:
            line = re.sub('stackoverflow',vals[0], line)
        elif count==2:
            line = re.sub('stackoverflow','\n'+vals[1], line)
        elif count==3:
            line = re.sub('stackoverflow','\n'+vals[2], line)
        elif count==4:
            line = re.sub('stackoverflow','\n'+vals[3], line)
        count=count+1

这不是出于我的目的,因为它是静态的,不能应用于少于或少于4个文件。

有人可以建议我实现此目的的一般方法。提前致谢。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 12:32:20 362 0
1 条回答
写回答
取消 提交回答
  • 使用iter

    例如:

    vals = iter(['f1','f2','f3','f4'])
    with open(os.path.join(file),'r') as fh:
            for line in fh:
                if "stackoverflow" in line:
                    line= re.sub('stackoverflow',next(vals), line)
    

    回答来源:stackoverflow

    2020-03-24 12:32:27
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载