如何将行中的某些部分保存到新的.txt文件中?

2024-06-28 14:45:13 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我有以下.txt数据文件,其中用黄色突出显示的数据需要保存到新的txt文件中: Data in text file

我设法用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"

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


Tags: 文件数据txtmode数据文件withlineopen
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

作为使用元素树的替代方法,您可以对结构化标记数据使用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

相关问题 更多 >