Python过滤tex

2024-04-26 00:11:45 发布

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

您好,这个文本文件将信息分组在字符“*******************************”之间,例如:

*******************************
15674B  2000
#12 DIVERSION
           800.000
COORDINATES
    0
FLOW DIRECTION
    0      
PROTECT DATA
    0      
DATUM
      0.00
RADIUS TYPE
    2
DIVIDE X-Section
0
SECTION ID

INTERPOLATED
    0
ANGLE
    0.00   0
RESISTANCE NUMBERS
   0  0     1.000     1.000     1.000    1.000    1.000
PROFILE        8
   -15.000    12.000     1.000     <#0>     0     0.000     0
     0.000    10.960     1.000     <#1>     0     0.000     0
     0.600    10.820     1.000     <#0>     0     0.000     0
     0.700    10.410     1.000     <#0>     0     0.000     0
     1.540     9.990     1.000     <#0>     0     0.000     0
     4.040     9.980     1.000     <#2>     0     0.000     0
     6.200    11.160     1.000     <#4>     0     0.000     0
    15.000    12.000     1.000     <#0>     0     0.000     0
LEVEL PARAMS
   0  0    0.000  0    0.000  20
*******************************
15674B  2000
#12 DIVERSION
           900.000

我要做的是提取字符“****************************”下面的第二行和第三行(#12,800.00)以及第24-32行的配置文件信息,并将它们保存到csv文件中。你知道吗

我知道我可以使用python来读取文件,例如:

with open ("results.txt","r") as myResults:
    readFile = myResults.readlines()

但我的问题是我不知道如何识别字符之间的信息组“****************************”,然后提取某些行。你知道吗

任何协助都将不胜感激。你知道吗


Tags: 文件信息datatypeprotect字符flow文本文件
2条回答

如果文件不太长(即您可以将整个文件读入内存),可以尝试以下操作:

with open("results.txt","r") as myResults:
    blocks = myResults.read() # put the whole file into a string

# split the string into blocks and process them independently
for block in blocks.split('*******************************')[1:]:
    lines = block.split('\n')
    print lines[1]
    print lines[2]
    for i in range(24, 33):
        print lines[i]

这可能会起作用:

lines_you_want = []

with open ("test.txt","r") as myResults:
    lines = myResults.readlines()
    indexes_of_lines_you_want = [] # We create a list for the indexes of the lines you want to extract

    for i in range(len(lines)):
        if '*******' in lines[i]: # We check if the current line is a line full of stars
            indexes_of_lines_you_want.extend([i+2, i+3]) # We add the indexes current_index+2 and current_index+3 to our list

    for i in indexes_of_lines_you_want:
        lines_you_want.append(lines[i])

之后,您可以将列表lines_you_want中的行保存到.csv文件中,如下所示

import csv

myfile = open('result.csv', 'w', newline='')
writer = csv.writer(myfile)
writer.writerow(lines_you_want)

尽管你应该把import csv放在开头。你知道吗

相关问题 更多 >

    热门问题