我是新手,想从txt文件中提取日期并将其写入另一个文件。每个日期在一行。但我不知道怎么做。我尝试追加但它不会工作,这样它只会写出最后的日期:
f = open("Krupp.txt", "r")
contents = f.read()
f.close() #close the file
# finditer
# finds all Dates and shows them in a List (Montag, 15. März 2013)
for m in re.finditer("(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonnabend|Sonntag)(, )([123][0-9]|[1-9])(. )(Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)( )([0-2][0-9][0-9][0-9])", contents):
print m.group(0)
# changed
with open("testoutput.txt", "a") as myfile:
myfile.write(m.group(0))
--- --- EDIT 我改变了
f.write(contents) # writes contents correctly to file with Umlauts
f.write(m.group(0))
到
with open("testoutput.txt", "a") as myfile:
myfile.write(m.group(0))
现在它将所有日期写入文件,但它会直接将它们写入另一个文件。如果我想让它们低于彼此,我还需要添加什么?
有人可以帮忙吗?
最好的问候
答案 0 :(得分:1)
如果我想要将它们放在彼此之下,我需要添加什么?
我想,你的意思是换行:
myfile.write("\n")
答案 1 :(得分:0)
以下内容适用于python 2.7.6
#!/bin/python
# -*- coding: utf-8 -*-
import re
f = open("Krupp.txt", "r")
contents = f.read()
f.close() #close the file
# finditer
# finds all Dates and shows them in a List (Montag, 15. März 2013)
with open("testoutput.txt", "a+") as f:
for m in re.finditer("(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonnabend|Sonntag)(, )([123][0-9]|[1-9])(. )(Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)( )([0-2][0-9][0-9][0-9])", contents):
print m.group(0)
f.write(m.group(0))
f.write("\n")
我以前测试的数据文件是:
Montag, 10. März 2013
Montag, 15. Juni 2013
Freitag, 15. März 2013
Montag, 15. Januar 2013
Dienstag, 15. März 2013
Montag, 15. März 2013
Juli, 15. Februar - incomplete
Juli, 15. Februar 2013
asdasdasdasdasd;lasdjkfas;dlfjk;a fjasl;dfj ;akdfj;askjdfa
Mittwoch, 15. März 2013
test
Mittwoch, 15. Januar 2013
blah
Montag, 15. März 2013
代码说明/更改:
# -*- coding: utf-8 -*-
才能在源open("testoutput.txt", "a+")
这会打开read+append mode中的文件。 with open
表达式在超出上下文时自动关闭文件(当with
块完成时)。它通常更安全,因为它也会关闭例外和错误的文件f.write("\n")
:回答您的编辑...在每个条目后添加一个新行如果您有更多问题或需要更多解释,请与我们联系