Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 3, 2014 16:51:22

malokm
Зарегистрирован: 2014-02-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярки или цикл ?

Ребят, есть массив t, в котором надо заменить:

“мама, папа, и, я ” <asd@mail.ru>,
mama,
“baba, deda,” <dsa@mail.ru>

что бы на выходе получилось:
“мама папа и я ” <asd@mail.ru>,
mama,
“baba deda” <dsa@mail.ru>

проблема в том, что в конце каждой строки мне необходимо оставлять запятую, тк дальше я делаю split(), а вот именно выражение внутри ковычек(“”) надо привести к виду без них.
с регулярками так и не разобрался

Офлайн

#2 Фев. 3, 2014 17:02:53

kise97
Зарегистрирован: 2012-05-31
Сообщения: 83
Репутация: +  4  -
Профиль  

Регулярки или цикл ?

>>> data = """
... "мама папа и я " <asd@mail.ru>,
... mama,
... "baba deda" <dsa@mail.ru>
... """
>>> reg=re.compile(r'("(.*?)"\s<.*?>)', re.DOTALL)
>>> re.sub(reg, lambda x: x.group(1).replace(x.group(2), x.group(2).replace(',',
 '')), data)
'\n"\xac\xa0\xac\xa0 \xaf\xa0\xaf\xa0 \xa8 \xef " <asd@mail.ru>,\nmama,\n"baba d
eda" <dsa@mail.ru>\n'

Отредактировано kise97 (Фев. 3, 2014 17:28:06)

Офлайн

#3 Фев. 3, 2014 21:44:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Регулярки или цикл ?

kise97, у тебя data без запятых

>>> import re
>>> 
>>> s = """
... "мама, папа, и, я " <asd@mail.ru>,
... mama,
... "baba, deda," <dsa@mail.ru> 
... """
>>> 
>>> out = re.sub(r'"[^"]+"',
...              lambda t: t.group().replace(',', ''),
...              s)
>>> print(out)
"мама папа и я " <asd@mail.ru>,
mama,
"baba deda" <dsa@mail.ru> 
>>>



Отредактировано py.user.next (Фев. 3, 2014 21:46:59)

Офлайн

#4 Фев. 3, 2014 22:03:58

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Регулярки или цикл ?

>>> data = """
... "мама, папа, и, я " <asd@mail.ru>,
... mama,
... "baba, deda," <dsa@mail.ru>"""
>>> s = data.replace(', ', ' ').replace(',"', '"')
>>> print(s)
"мама папа и я " <asd@mail.ru>,
mama,
"baba deda" <dsa@mail.ru>
:)



Офлайн

#5 Фев. 4, 2014 09:02:26

malokm
Зарегистрирован: 2014-02-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярки или цикл ?

Lexander, не такое не пойдет такое и я сам могу написать.

py.user.next, kise97, что то у меня вместо вывода, выводит одни ковычки мб где то косяк ?

for t_decode_each in t_decode:
    t_code = t_decode_each[-1]
    t_deformat = t_decode_each[0]
    print(t_deformat)
выводит :
“мама, папа, и, я ” <asd@mail.ru>,
mama,
“baba, deda,” <dsa@mail.ru>

далее писал так, после принта:
    s='"'
    t_out = re.sub(r'"[^"]+"',lambda t_deformat: t_deformat.group().replace(',', ''),s)
    print(t_out)

выводит просто:
"

where is my mistake?)

Офлайн

#6 Фев. 4, 2014 11:19:02

kise97
Зарегистрирован: 2012-05-31
Сообщения: 83
Репутация: +  4  -
Профиль  

Регулярки или цикл ?

py.user.next
Но код то все равно рабочий

>>> data = """
... "мама, папа, и, я " <asd@mail.ru>,
... mama,
... "baba, deda," <dsa@mail.ru>
... """
>>> import re
>>> reg=re.compile(r'("(.*?)"\s<.*?>)', re.DOTALL)
>>> re.sub(reg, lambda x: x.group(1).replace(x.group(2), x.group(2).replace(',', '')), data)
'\n"\xac\xa0\xac\xa0 \xaf\xa0\xaf\xa0 \xa8 \xef " <asd@mail.ru>,\nmama,\n"baba d
eda" <dsa@mail.ru> \n'
>>>

Офлайн

#7 Фев. 4, 2014 21:08:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Регулярки или цикл ?

malokm
мб где то косяк ?
malokm
далее писал так, после принта:
во-первых, зачем этот for нужен ?
во-вторых, в s должен содержаться весь текст, а не одна кавычка



Офлайн

#8 Фев. 6, 2014 09:21:33

malokm
Зарегистрирован: 2014-02-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярки или цикл ?

во всем была виновата моя лень!

разобрался как писать функции и все нормально вышло

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version