如何使用Python从原始文件中提取数据

如何使用Python从原始文件中提取数据,python,regex,Python,Regex,当前代码: 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-

当前代码:

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

我最好的猜测是使用正则表达式模式,这就是我所遇到的问题。提前谢谢。

也许你可以用这样的正则表达式:

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

第一个捕获是针对IP地址的(有关捕获IP地址的更好方法,请参阅)。对于其他两个捕获,我假设除了点以外的任何东西都可以使用。

事实上,正则表达式是一种可行的方法:

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))

使用您提供的示例数据很难找到正则表达式或其他解决方案。你能发布一些更真实的或者更多关于你数据格式的信息吗?奇怪的原始文件!!!你确定你已经向我们展示了原始文件中的确切数据吗?@peymamohsenikiasari这只是实际数据的样本。太遗憾了,我不能全部粘贴在这里。我已经用创建原始文件的代码更新了OP。谢谢,但是在我阅读该文件时,我想在同一行打印3个项目。IP、国家和代码。如何提取所有三个项目?上面的正则表达式有三个捕获组(以偏执主题开始和结束的部分),因此它提取了所有三个捕获组。看看你让我开心了。谢谢,你是怎么从文件中读出来的?我得到了TypeError:当我使用file=open(“d.txt”、“rb”)时,预期的字符串或缓冲区是相同的结果。有没有办法与您共享原始文件?我已在此处上载了该文件,请尝试查看您是否可以重新创建相同的结果。