Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将组作为字符串写入文件_Python_Python 2.x - Fatal编程技术网

Python 将组作为字符串写入文件

Python 将组作为字符串写入文件,python,python-2.x,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

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

现在,它会将所有日期写入文件,但它会直接在另一个日期之后写入。如果我想让它们彼此在下面,我需要补充什么

有人能帮忙吗


致以最诚挚的问候

以下内容适用于我的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
代码说明/更改:

  • 我必须为python添加
    #-*-编码:utf-8-*-
    ,才能在源代码中获得utf字符
  • open(“testoutput.txt”、“a+”)
    这将在中打开文件
  • 您正在每个循环中重新打开文件,这是不建议的!在循环之前移动开环
  • expression在脱离上下文时自动关闭文件(当
    with
    块完成时)。它通常更安全,因为它还会在出现异常和错误时关闭文件
  • f.write(“\n”)
    :回答您的编辑。。。在每个条目后添加新行
  • 如果您有更多问题或需要更多解释,请告诉我

    如果我想让它们彼此在下面,我需要补充什么

    我猜,你指的是一个换行:


    myfile.write(“\n”)

    请提供更多详细信息。提供文件外观的示例。你从你的正则表达式比赛中得到什么了吗?此外,每次以“写入”模式打开循环时,也会不断在循环中过度写入文件。您希望在循环之外打开文件,然后进行写入。您只需在每次迭代中覆盖您的文件,您可能需要
    open(“testoutput.txt”,“a”)
    。此外,在每次迭代中打开和写入文件都非常慢-保存到字符串中,然后再编写一次。非常感谢:)我可能需要很多帮助来完成下一步谢谢。由于缺少词汇,我常常很难找到答案
    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