Найти - Пользователи
Полная версия: Регулярки или цикл ?
Начало » Python для новичков » Регулярки или цикл ?
1
malokm
Ребят, есть массив t, в котором надо заменить:

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

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

проблема в том, что в конце каждой строки мне необходимо оставлять запятую, тк дальше я делаю split(), а вот именно выражение внутри ковычек(“”) надо привести к виду без них.
с регулярками так и не разобрался
kise97
>>> 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'
py.user.next
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> 
>>>
Lexander
>>> 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>
:)
malokm
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?)
kise97
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'
>>>
py.user.next
malokm
мб где то косяк ?
malokm
далее писал так, после принта:
во-первых, зачем этот for нужен ?
во-вторых, в s должен содержаться весь текст, а не одна кавычка
malokm
во всем была виновата моя лень!

разобрался как писать функции и все нормально вышло
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