簡體   English   中英

如何使用Python從原始文件中提取數據

[英]How to extract data from a raw file with Python

當前代碼:

import re 

file = open("d.txt", "rb")
regex = r'((?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(?:'\
         '25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(?:'\
         '25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(?:'\
         '25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?))'\
         '\.+([^\.]+)\.+([^\.]+)'

for x in (re.findall(regex, file)):
    print("\t".join(x))

我想從原始文件中提取數據並將其打印到屏幕上

使用以下腳本將原始輸出寫入文件:

data=r.raw.read()
        if "var fgt_lang =" in str(data):
            with open("logs.dat", 'w') as f:
                f.write(data)

原始文件是一個巨大的文件,可以進行排序,並包含以下格式的示例數據:

..........460000...........192.168.11.27....Germany..............hasdy2348a@sd
..........blah.....blah.............192.168.11.19.........................Swed
en..........................................................................Tw
inkle009................blah.................

如何提取和打印以下格式的數據:

192.168.11.27  Germany  hasdy2348a@sd
192.168.11.19  Sweden   Twinkle009

我最好的猜測是使用正則表達式模式,這就是問題所在。 提前致謝。

確實,正則表達式是一種解決方法:

import re 

data = "..........460000...........192.168.11.27....Germany..............hasdy2348a@sd..........blah.....blah.............192.168.11.19.........................Sweden..........................................................................Twinkle009................blah................."


regex = r'((?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(?:'\
         '25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(?:'\
         '25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(?:'\
         '25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?))'\
         '\.+([^\.]+)\.+([^\.]+)'

for r in (re.findall(regex, data)):
  print("\t".join(r))

也許您可以使用這樣的Regex:

(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)\.*([^.]*)\.*([^.]*)

第一次捕獲是針對IP地址的(有關捕獲IP地址的更好方法,請參見此處 )。 對於其他兩個捕獲,我假設除點外其他任何東西都可以。

暫無
暫無

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

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