[英]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.