Я пытаюсь разобрать следующие две строки в Python:Разбор строки в Python
Вот первая строка
s1="<one> <two> <three> here's one attribute < six : 10.3 > < seven : 8.5 > < eight : 90.1 > < nine : 8.7 >"
Мне нужно повторно, так что я могу разделить и хранить выше в список как это, где каждый элемент в новой строке ниже элемент с определенным индексом в списке:
0 one
1 two
2 three
3 here's one attribute
4 six : 10.3
5 seven : 8.5
6 eight : 90.1
7 nine : 8.7
Вот вторая строка
s2="<one><two><three> an.attribute ::"
Итак, подобным образом, мне нужны элементы, хранящиеся в списке, как это:
0 one
1 two
2 three
3 an.attribute
Вот что я пытался до сих пор, повторное это ответ, который я получил от другого вопроса я отправил на Переполнение стека.
res = re.findall('< (.*?) >', s1)
pprint(res)
index=0
for index in res:
print index
но проскакивают "вот один атрибут"
выход:
['one', 'two', 'three', 'six : 10.3', 'seven : 8.5', 'eight : 90.1', 'nine : 8.7']
one
two
three
six : 10.3
seven : 8.5
eight : 90.1
nine : 8.7
Может кто-нибудь помочь мне? =)
Если кто-нибудь знает, как извлечь числовые значения из строки, как 10,3, 8,5, 90,1 и 8,7 из первой строки тоже, что было бы слишком большой =)
EDIT: Дункан Я попытался ваш код, но я, похоже, не получаю вывод, как должен. Я предполагаю, что где-то я сделал какую-то ошибку. не могли бы вы сказать мне, что это такое?
from __future__ import generators
from pprint import pprint
s2="<one><two><three> an.attribute ::"
s1="<one> <two> <three> here's one attribute < six : 10.3 > < seven : 8.5 > < eight : 90.1 > < nine : 8.7 >"
def parse(s):
for t in s.split('<'):
for u in t.strip().split('>',1):
if u.strip(): yield u.strip()
list(parse(s1))
list(parse(s2))
pprint(s1)
pprint(s2)
Вот результат я получаю:
"<one> <two> <three> here's one attribute < six : 10.3 > < seven : 8.5 > < eight : 90.1 > < nine : 8.7 >"
'<one><two><three> an.attribute ::'
http://docs.python.org/2/library/re.html – vartec
@daveoncode Я обновил мой вопрос, не могли бы вы еще раз взглянуть? :) – Anon
@vartec Спасибо за ссылку, я посмотрел на это, но еще не понял, но – Anon