Форум сайта python.su
Привет всем поситителям форума. На питоне програмирую только месяц, все ответы находил через гугл, но вот щас немного подзастрял.
Имеется к примеру файл 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 )
Спасибо
Отредактировано (Апрель 28, 2008 19:33:12)
Офлайн
Если идти этим путем:
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)
Отредактировано (Апрель 28, 2008 19:56:05)
Офлайн
Хорошо знать регулярные выражения!
А еще лучше хорошо знать стандартную библиотеку Питона! :) (Хотя бы ее)
from ConfigParser import ConfigParser
config = ConfigParser()
config.read('test.ini')
test_a = config.get('main', 'test_a')
[main]
test_a = blablabla
test_b = pp5o5knb
Офлайн
если совсем прямолинейно, то
def GetVal(str):
for i in open(“f.ini”):
if str in i:
return i.rsplit(“=”)
print GetVal(“test_a”)
Офлайн
Не хочу создавать еще один тред.
Есть файл такого вида:
NameTable:
regexp1
regexp2
regexpN
NameTable1:
regexp1
regexp2
regexpN
NameTable2:
regexp1
regexp2
regexpN
Как написать чтобы он пробежался по файлу, нашел NameTable1 и вывел всё что ниже этого, но ДО NameTable2.
Таким образом можно будет сделать фильтр в моей программе по названию таблицы, а еще необходимо сделать фильтр по дате создания regexp'a - тут я вообще не представляю как это сделать…. Помогите пожалуйста, а то застрял.
Офлайн
up
Офлайн
Простейшая задача же:
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')
Офлайн
Отпишу здесь же.
Задача: вытащить 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')]
...
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)
Отредактировано (Ноя. 25, 2011 15:28:16)
Офлайн
s0rgЯ не увидел момента, чтобы он выводил текст ОТ NameTable1 ДО NameTable2 (не включая названия таблиц), покажите пожалуйста.
Простейшая задача же: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')
Офлайн
~ cat test_input
NameTable:
regexp1
regexp2
regexpN
NameTable1:
regexp1
regexp2
regexpN
NameTable2:
regexp1
regexp2
regexpN
~ ./test_proc.py
['regexp1', 'regexp2', 'regexpN']
Офлайн