Форум сайта python.su
0
Ребят, есть массив t, в котором надо заменить:
“мама, папа, и, я ” <asd@mail.ru>,
mama,
“baba, deda,” <dsa@mail.ru>
что бы на выходе получилось:
“мама папа и я ” <asd@mail.ru>,
mama,
“baba deda” <dsa@mail.ru>
проблема в том, что в конце каждой строки мне необходимо оставлять запятую, тк дальше я делаю split(), а вот именно выражение внутри ковычек(“”) надо привести к виду без них.
с регулярками так и не разобрался
Офлайн
>>> 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)
Офлайн
857
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)
Офлайн
33
>>> 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>
Офлайн
0
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)
s='"' t_out = re.sub(r'"[^"]+"',lambda t_deformat: t_deformat.group().replace(',', ''),s) print(t_out)
Офлайн
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' >>>
Офлайн
857
malokm
мб где то косяк ?
malokmво-первых, зачем этот for нужен ?
далее писал так, после принта:
Офлайн
0
во всем была виновата моя лень!
разобрался как писать функции и все нормально вышло
Офлайн