【问题标题】:writing groups as strings to file将组作为字符串写入文件
【发布时间】:2017-03-19 15:57:52
【问题描述】:

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

---编辑--- 我变了

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))

现在它将所有日期写入文件,但它直接一个接一个地写入它们。如果我希望它们彼此低于,我必须添加什么?

有人可以帮忙吗?

最好的问候

【问题讨论】:

  • 请提供有关此的更多详细信息。提供文件外观的示例。你从你的正则表达式匹配中得到什么吗?此外,每次以“写入”模式打开文件时,您也会不断地覆盖循环内的文件。您想在循环之外打开文件然后写入。
  • 您只是在每次迭代中覆盖您的文件,也许open("testoutput.txt", "a") 是您正在寻找的。此外,在每次迭代时打开和写入文件非常慢 - 保存到字符串中,然后再写入一次。

标签: python python-2.x


【解决方案1】:

如果我想让它们彼此下方,我必须添加什么?

我猜,你的意思是换行:

myfile.write("\n")

【讨论】:

  • 谢谢。由于缺少词汇,我经常很难找到答案
【解决方案2】:

以下内容在 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 -*- 才能在源代码中获取 UTF 字符
  2. open("testoutput.txt", "a+") 这将打开read+append mode 中的文件。
  3. 您在不建议的每个循环中都重新打开文件!在循环之前移动了开放
  4. with open 表达式在脱离上下文时自动关闭文件(当 with 块完成时)。它通常更安全,因为它还会在出现异常和错误时关闭文件
  5. f.write("\n"):回答您的编辑...在每个条目后添加一个新行

如果您有更多问题或需要更多解释,请告诉我

【讨论】:

  • 非常感谢 :) 我可能需要很多帮助才能完成进一步的步骤
猜你喜欢
  • 2017-10-18
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 2011-08-18
  • 1970-01-01
相关资源
最近更新 更多