将组作为字符串写入文件

时间:2017-03-19 15:57:53

标签: python python-2.x

我是新手,想从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))

现在它将所有日期写入文件,但它会直接将它们写入另一个文件。如果我想让它们低于彼此,我还需要添加什么?

有人可以帮忙吗?

最好的问候

2 个答案:

答案 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

代码说明/更改:

  1. 我必须为python添加# -*- coding: utf-8 -*-才能在源
  2. 中获取UTF字符
  3. open("testoutput.txt", "a+")这会打开read+append mode中的文件。
  4. 您在每个循环中重新打开文件,这是未建议的!在循环之前移动了开放
  5. with open表达式在超出上下文时自动关闭文件(当with块完成时)。它通常更安全,因为它也会关闭例外和错误的文件
  6. f.write("\n"):回答您的编辑...在每个条目后添加一个新行
  7. 如果您有更多问题或需要更多解释,请与我们联系