【问题标题】:How to save certain sections in a line to a new .txt file?如何将一行中的某些部分保存到新的 .txt 文件中?
【发布时间】:2020-05-05 16:41:27
【问题描述】:

所以我有以下 .txt 数据文件,其中以黄色突出显示的数据需要保存到新的 txt 文件中:

我设法在 Python 中打印了某些部分,但仅此而已:

with open('Podatki-zima-MEDVES.txt', mode='r+t') as file:
for line in file:
      print(line[18:39])

导致:

 EntryDate="20101126" 
 EntryDate="20101126"
 EntryDate="20101126"
 EntryDate="20101126"
EntryDate="20101127" 
EntryDate="20101128" 
 EntryDate="20101128"
 EntryDate="20101128"
 EntryDate="20101128"

我知道这是一个非常基本的问题,但对于有经验的人来说,这不会花一分钟时间。 谢谢

【问题讨论】:

  • 你的目标是什么?您可以使用.write 方法写入文件对象
  • 这跟anaconda有什么关系?
  • @tripleee 我正在使用 Anaconda 编写我的项目,不妨使用已经实现的模块来解决我的问题
  • @JArunMani 主要目标是绘制雪深[mm]相对于时间[日期]的图表

标签: python


【解决方案1】:

作为使用元素树的替代方法,您可以为结构化标记数据使用 Expat 解析器。

您首先需要指定文档类型并在数据周围包裹一个顶级元素,如下所示:

<?xml version="1.0"?>
<podatki>
<ROW RowState="5" EntryDate="20101126" Entry="" SnowDepth="4" />
<ROW RowState="13" EntryDate="20101126" Entry="Prvi sneg to zimo" SnowDepth="10" />
</podatki>

然后你可以使用 expat 解析器。

import xml.parsers.expat

def podatki(name, attrs):
    if name == "ROW":
        print(f'EntryDate={attrs["EntryDate"]},', 
              f'SnowDepth={attrs["SnowDepth"]}')

parser = xml.parsers.expat.ParserCreate()
parser.StartElementHandler = podatki

with open('podatki.xml', 'rb') as input_file:
    parser.ParseFile(input_file)

结果应该是

EntryDate=20101126, SnowDepth=4
EntryDate=20101126, SnowDepth=10

【讨论】:

    【解决方案2】:

    您似乎正在尝试解析 xml 数据。

    有一个标准库包可以做到这一点。该文档非常好,它包含一个教程。看看The ElementTree XML API

    在您的情况下,代码如下所示:

    data = """
    <data>
      <ROW EntryData="20101126" SnowDepth="4"/>
      <ROW EntryData="20101127" SnowDepth="8"/>
    </data>"""
    
    import xml.etree.ElementTree as ET
    root = ET.fromstring(data)
    
    for child in root:
        entries = child.attrib
        print(entries["EntryData"], entries["SnowDepth"])
    
    

    这给出了您正在寻找的输出:

    20101126 4
    20101127 8
    

    【讨论】:

    • 在摆弄了模块之后,我设法导入了所需的数据,并在 Excel 中对其进行了编辑。感谢您的帮助!
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 2022-01-04
    • 2011-04-22
    相关资源
    最近更新 更多