【发布时间】:2021-06-01 09:24:01
【问题描述】:
我是一个完整的初学者,从今天开始,但几年前我做了一点 C++,我正在尝试编写一个代码来读取文本文件并在每个递增模式的开头添加一个数字进一步阅读。
到目前为止,我已经写了:
import tkinter as tk
import re
master = tk.Tk()
from tkinter.filedialog import askopenfilename
filename = askopenfilename()
file = open(filename, "r+")
filetext = file.read()
pattern = '"name":"(.*?)"'
name = re.findall(pattern, filetext)
print (name)
namereplace = re.sub(pattern, "test", filetext)
print ("this ran")
file.close()
这会打开选择文本文件的提示,读取文本文件并找到我需要添加订单的所有字符串,但不会将它们替换为"test"。
【问题讨论】:
-
替换文本后,需要将其写入文件。这里也不需要
findall。 -
更具体地说,您需要关闭文件并以
"w"模式重新打开它才能更新它。 -
@martineau 我认为使用 r+ 打开会允许读取和写入功能?
-
Adrian:
'r+'确实允许读取和写入,但是混合了这两种操作——即在阅读文件的同时更新文件——这将非常难以实施。出于这个原因,最好在单独的步骤中重新编写整个内容(这需要跟踪大量信息)。简化事情的一种策略是将结果写入一个单独的临时文件,读取原始文件,然后删除原始文件并重命名临时文件,以便在最后替换它。