Найти - Пользователи
Полная версия: Поиск по файлу и отображение
Начало » Python для новичков » Поиск по файлу и отображение
1 2 3 4
Axl
Привет всем поситителям форума. На питоне програмирую только месяц, все ответы находил через гугл, но вот щас немного подзастрял.
Имеется к примеру файл test.ini в котором 2-е строчки:
test_a = blablabla
test_b = pp5o5knb
Нужно чтобы программа нашла в файле test.ini нужную строчку и отобразила только то что после “равно”
Пробывал нечто подобное)) не помогло ..

import wx
import re
import string

def read(self, event):
File = open (“test.ini”, ‘r’)
all_lines = File.readlines()
File.close ()
test_a = re.findall('(test_a=w+)', all_lines)
test_b = re.findall('(test_b=w+)', all_lines)
self.text_a.SetValue(test_a )
self.text_b.SetValue(test_b )

Спасибо
shiza
Если идти этим путем:
import re

data = file('test.ini').read()
match = re.search(r"test_a =(.*)$", data, re.MULTILINE)
if match:
test_a = match.group(1)

match = re.search(r"test_b =(.*)$", data, re.MULTILINE)
if match:
test_b = match.group(1)
Но есть и более эффективные =)
Андрей Светлов
Хорошо знать регулярные выражения!
А еще лучше хорошо знать стандартную библиотеку Питона! :) (Хотя бы ее)

from ConfigParser import ConfigParser
config = ConfigParser()
config.read('test.ini')
test_a = config.get('main', 'test_a')
Дальше - читать доку по ConfigParser

Только перепиши test.ini, чтобы выглядел как
[main]
test_a = blablabla
test_b = pp5o5knb
Группы (секциями их в документации называют) нужны…
hellt
если совсем прямолинейно, то

def GetVal(str):
for i in open(“f.ini”):
if str in i:
return i.rsplit(“=”)


print GetVal(“test_a”)
n2b
Не хочу создавать еще один тред.
Есть файл такого вида:

NameTable:
regexp1
regexp2
regexpN

NameTable1:
regexp1
regexp2
regexpN

NameTable2:
regexp1
regexp2
regexpN

Как написать чтобы он пробежался по файлу, нашел NameTable1 и вывел всё что ниже этого, но ДО NameTable2.

Таким образом можно будет сделать фильтр в моей программе по названию таблицы, а еще необходимо сделать фильтр по дате создания regexp'a - тут я вообще не представляю как это сделать…. Помогите пожалуйста, а то застрял.
n2b
up
s0rg
Простейшая задача же:
def get_regexp(input_file, table_name):
result = list()
store = False
with open(input_file) as fd:
for line in fd:
line = line.strip(' \n\r:')
if result and not line:
break
if line == table_name:
store = True
continue
if store:
result.append(line)
return result

print get_regexp('test_input', 'NameTable1')
Soeti
Отпишу здесь же.

Задача: вытащить arp таблицу в linux для последующего разбора.

def GetArp(search):
import re
try:
file=open("/proc/net/arp", "r")
except IOError as (errno, strerror):
print "cannot open file", IOError
return 0
for mystr in file:
Search= re.findall(ur"((?:[0-9]{1,3}\.){3}[0-9]{1,3}).+((?:[0-9a-z]{2}:){5}[0-9a-z]{2})", mystr)
print Search
Вывод идет вот такой:

[]  ------------> тут заголовок arp, поэтому пустой.
[('192.168.11.96', '34:18:04:5e:1f:50')]
[('192.168.4.68', '00:21:91:7d:5a:66')]
...
1.Как в этой функции красиво преобразовать вывод в словарь с ключем по маку?


UPD

Всё оказалось элементарно

     import re
Mdict={}
try:
file=open("/proc/net/arp", "r")
except IOError as (errno, strerror):
print "cannot open file", IOError
return 0
for mystr in file:
Search= re.findall(ur"((?:[0-9]{1,3}\.){3}[0-9]{1,3}).+((?:[0-9a-z]{2}:){5}[0-9a-z]{2})", mystr)
Mdict.update(Search)
n2b
s0rg
Простейшая задача же:
def get_regexp(input_file, table_name):
result = list()
store = False
with open(input_file) as fd:
for line in fd:
line = line.strip(' \n\r:')
if result and not line:
break
if line == table_name:
store = True
continue
if store:
result.append(line)
return result

print get_regexp('test_input', 'NameTable1')
Я не увидел момента, чтобы он выводил текст ОТ NameTable1 ДО NameTable2 (не включая названия таблиц), покажите пожалуйста.
s0rg
~ cat test_input 
NameTable:
regexp1
regexp2
regexpN

NameTable1:
regexp1
regexp2
regexpN

NameTable2:
regexp1
regexp2
regexpN

~ ./test_proc.py
['regexp1', 'regexp2', 'regexpN']
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB