[英]Reading and writing to files in python, translating text in one file to another
[英]Reading from one file and writing into another in Python
我正在編寫一個程序,在文件中找到某些文本行,並將它們寫入另一個文件,以消除其間的所有煩人文本(它是.vmg文件)。 通過我的python和googleing技能,我編寫了以下程序。
with open("filein.txt") as f:
with open("fileout.txt", "w") as f1:
for line in f:
if "telephone number" in line:
f1.write(line)
if "telephone number" and "X-BOX" in line:
f1.write(line)
if "Subject" in line:
f1.write(line)
該程序工作正常,但對於“主題”我想告訴程序不僅要寫關鍵字“subject”的單行文本,而是直到它到達某個關鍵字(在我的情況下是“END”) :VBODY“)。 我該怎么辦?
不是最優雅的,但你可以使用一個標志來指示光標是否在Subject和END之間:VBODY ::
with open("filein.txt") as f:
with open("fileout.txt", "w") as f1:
for line in f:
if in_subject:
f1.write(line)
if "END:VBODY" in line:
in_subject = False
else:
if "telephone number" in line:
f1.write(line)
if "telephone number" and "X-BOX" in line:
f1.write(line)
if "Subject" in line:
in_subject = True
f1.write(line)
如果您只需要這個特例,您可以使用簡單的狀態變量。 像這樣的東西:
inside_subject = False
with open("fileout.txt", "w") as out:
for line in open("filein.txt", "r"):
if inside_subject:
if not "END:VBODY" in line:
print line
else:
inside_subject = False
else:
if "telephone number" in line:
out.write(line)
elif "telephone number" in line and "X-BOX" in line: # will never match this though
out.write(line)
elif "Subject" in line:
out.write(line)
inside_subject = True
雖然如果你有更多的條件,考慮使用一些狀態機。
if "Subject" in line:
f1.write(line[:line.index("END:VBODY")])
這是另一個工作解決方案,只需if "Subject" in line
條件下的if "Subject" in line
下添加while循環。
with open("filein.txt") as f:
with open("fileout.txt", "w") as f1:
for line in f:
if "telephone number" in line:
f1.write(line)
if "telephone number" and "X-BOX" in line:
f1.write(line)
if "Subject" in line:
f1.write(line)
# new code added here
while 'END:VBODY' not in line:
line = f.next()
f1.write(line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.