我有一个普通列表,我想每25个索引更改该列表的元素(从第二个索引开始)。所以我创建了一个循环来生成该数字并将其存储在一个列表中(即2,27,52,77 ....)。然后我打印了该索引的每个项目,但是现在我似乎找不到使用re.sub的方法。 我想用新的元素替换这些元素,然后将列表中的所有项目(不仅仅是我已经更改过的那些)写入文件中。
所以目标是使用re.sub或其他方法来替换:
' Title =' by ' Author ='
我如何实现这一目标?
这是我的代码:
counter = 0
length = len(flist) # Max.Size of List
ab = [2]
for item in flist:
counter +=1
a = ((25*counter)+2) #Increment
ab.append(a)
if a >= length:
ab.pop() #Removing last item
break
for i in ab:
print(flist[i-1]) #Printing element in that index
#replace item
#write to file
fo = open('somefile.txt', 'w')
for item in flist:
fo.write(item)
fo.close()
PS:我是python的新手,sugestions和批评是非常折旧的!
答案 0 :(得分:1)
要匹配您可以使用的文字:
new_str = re.sub(r'\s+Title\s+=', 'Author =', old_str)
\s
表示空格,+
表示一个或多个。您可以使用\s{4}
来精确匹配4个空格,或者根据需要使用多个空格。更多信息here。
或者,您可以使用replace()
:
new_str = old_str.replace(' Title =', 'Author =')
您可以使用range()
来简化其余代码。 range()有3个参数,其中2个是可选的;开始,结束,步骤。
for i in range(2, 200, 25):
print(i)
最后,您可以使用with open()
代替open()
:
with open('my_file.txt', 'w') as fo:
# Do stuff here.
....
....
# File closes automatically.
答案 1 :(得分:0)
类似的东西:
for i in ab:
fixed = re.sub("/ Title =/", " Author =", flist[i-1])
print(fixed) #Printing replaced line
免责声明:我使用的是移动设备,因此无法测试其正确性