如何使用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”)时,预期的字符串或缓冲区是相同的结果。有没有办法与您共享原始文件?我已在此处上载了该文件,请尝试查看您是否可以重新创建相同的结果。