簡體   English   中英

Python-將一部分txt文件放入另一個txt中

[英]Python - Take parts of a txt file and put them in another txt

我有一個使用以下語法的大文件:

Object 1:
[Useless Data]
com_pos = number number number
[Useless Data]

Object 2:
[Useless Data]
com_pos = number, number, number
[Useless Data]
...
and so on (there's a very large number of objects.).

我想做的是選擇數字,並將其放入具有特定格式的txt文件中(基本上每個對象一行,每個數字列)。

問題是我對每個對象都有相同的com_pos = 我應該怎么做? 我應該使用正則表達式嗎?

您必須為此編寫某種解析器。 如果您不理解正則表達式,則無需使用它們。 例如,給出您的兩個示例,這將同樣有效:

with open(path) as f:
    for line in f:
        columns = line.split()
        if columns[0] == 'com_pos' and columns[1] == '=':
            numbers = [float(column.rstrip(',')) for column in columns[2:]]
            # do something with numbers

使用正則表達式可以使事情更緊湊,更有效或更健壯。 例如,考慮一下:

r = re.compile(r'com_pos\s*=\s*(\d+),?\s*(\d+),?\s*(\d+)')
with open(path) as f:
    for line in f:
        m = r.search(line)
        if m:
            numbers = [float(group) for group in m.groups]
            # do something with numbers

這可能會運行得更快,並且在面對可變輸入(數據格式有時帶有逗號,有時看起來不太像人工編寫的文件……)時會更健壯,而且如果您了解正則表達式,它會更簡單。 但是,如果不這樣做,將很難維護。


com_pos\s*=\s*(\d+),?\s*(\d+),?\s*(\d+)

正則表達式可視化

Debuggex演示

您可以使用以下內容:

with open ('first_file' ,'r') as f1 and open('second_file' ,'w') as f2 :
 for line in f1.readlines() :
    if 'com_pos' in line :
       f2.write(line.split('=')[1])

首先,您需要找到com_pos所在的行,然后可以使用=分隔該行,並寫入第二個分隔的元素,即第二個文件中的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM