Найти - Пользователи
Полная версия: Раобта со строками
Начало » Python для новичков » Раобта со строками
1 2 3 4
gelo
спасибо :)
а возможно ли преобразовать спискок в отдельные строки? Или лучше все операции над строками производить в теле функции, и потом уже получить список с необходимыми параметрами ?
gelo
помогите пожалуйста, оооочень прошу ;) как добиться того, чтобы из полученной строки, например,
['slovo1 slovo2', 'slovo3 slovo4', 'slovo5 slovo6', 'slovo7 slovo8', 'slovo9 slovo10', 'etc etc']
выписывалось с помошью print только поле, где есть slovo3 и slovo5, но не выписывалилсь остальные поля, т.е.
['slovo3 slovo4', 'slovo5 slovo6']
надеюсь вопрос мой не дерзок ;) о величайшие гуру

(merci)
igor.kaist
for x in your_list:
if 'slovo3' in x and 'slovo5' in x:print x
что то типа этого?
P.S. В твоем примере не строка, а список, который содержит строки…
gelo
да, но только чтоб отображалась целый блок (или целый кусок строки), начинающийся со слова ‘slovo3’,
думаю так легче, чтоб не выписывать каждое ‘slovo’

igor.kaist
for x in your_list:
if 'slovo3' in x and 'slovo5' in x:print x
чет такой подход у меня так и не заработал… программа вообще не выдает никаких результатов
gelo
вообщем нагло взяв рецепты, указанные в этой теме А.Светловым, получается вот такое чудо

#!/usr/bin/python
import string
import re

ap = open('./kuku.map','r')
s = ap.xreadlines()
slovo3 = 'DATA'
slovo4 = 'NAME'
def parser():
result = None
while True:
line = yield result
result = None
line = line.strip()
if line.startswith('LAYER'):
block = []
name = None
while True:
block.append(line)
line = yield None
line = line.strip()
if line.startswith('NAME'):
lst = line.split()
lst.pop(0)
name = lst.pop(0)
if re.search('#[ ]*?NAME|#[ ]*?GROUP', line):
break
if string.find(line, 'DATA|TILEINDEX'):
pass
else:
break
if line.startswith('END'):
result = (name, block)
break
p = parser()
p.send(None)

#siter = iter(p.send(line))

#for x in s:
# ret = p.send(line)
# if ret:
# print x

for line in s:
ret = p.send(line)
for x in line:
if slovo3 in line and slovo4 in line:
print x
else:
print "asdaSD"
тут мне вылазят одни “asdaSD”
a поменяв на закоментированнык блок выдает слишком много инфы. мне б только определенные куски в отдельных строках

(merci)
gelo
так вообщем весь этот скрипт совершенно не рабочий. попытка чтото смастерить полностью провалилась :(
если начать от самого начала, вот этот кусок
имея такой текст для обработки
LAYER 
TYPE Raster
DATA slovo
END

LAYER
TYPE Polygon
DATA slovo
END

LAYER
TYPE Raster
DATA slovo
END

LAYER
TYPE Polygon
DATA slovo
END
и при попытке обработать его
if string.find(line, 'Raster') == -1:   // типа, чтобы строки с 'TYPE Raster' вообще не выводились
break
else:
pass
выдаеться лишь строка , что в принципе и не плохо, но таких строк там две. И не могу понять почему вторую строчку с ‘TYPE Polygon’ не показывает. Подскажет ли ктонить с этим?
Positive
Вывод-то где?
Приведенный код вообще ничего не выводит.
Ferroman
Невнимательно прочитали что такое break.
Вы заканчиваете цикл, а надо просто пропустить итерацию. Для этого есть continue.
gelo
ну вообщем то долго мучаюсь, но прогресс замечаю :) только мало времени, однако, отдаю программированию. ладно…
еще такой маленький вопрос, вот я тут хитрю с модулем re ,
if re.search('#[ ]*GROUP|#[ ]*Group|#[ ]*NAME|#[ ]*Name', line): break
....
....
else .... тут все работает :)
а как вот написать с помощью такого модулю проверку, что если в строке (line) нету слова ПРИВЕТ, пропускать ее

(надеюсь я не трудно описал чего бы хотелось)

я пытался вот так
if re.search('PRIWET', line): break  # не работает :*
else:
....
....
и

if not string.find(line, 'PRIWET'): print 'baskdsad'    # а в таком случае все равно выводит строку где слова ПРИВЕТ нету :/
else: # хотя и печатает на выходе 'baskdsad'
...
...
вообще если честно нигде толком не прочитал о IF NOT :/

(cheeeeers :) )
Ferroman
gelo
Вы не понимаете основ программирования и бинарной логики. Вот с них и начните.
Кроме того re.search не возвращает булевого значения, так что запись некорректна.
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