我有文本文件(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
使用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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。