У меня возникла ситуация, когда я могу столкнуться с «{ключом» или «{ключ \ n», и я хочу преобразовать «{key \ n» в «{key], не затрагивая другие экземпляры« \ n »в строке , ключ может содержать любой из a-z, A-Z, 0-9, подчеркивание, тире.Python 2.6.1 (OS X 10.6.8) re.sub() поведение подчеркивания в группах?
Я думал, что это будет работать, но это не делает:
import re
test = '{sq-a_ foo}{sq-b_\nbar}\n{sq-c_ gluck}'
print re.sub(r'(\{*[_a-zA-Z0-9-]\n)','\1 ',test)
возвращает это:
{sq-a_ foo}{sq-b bar}
{sq-c_ gluck}
... где есть невидимый персонаж, 0x01
, именно там, где подчеркивание должен быть заменен.
Я ожидал это:
{sq-a_ foo}{sq-b_ bar}
{sq-c_ gluck}
Так что мои вопросы, где же подчеркивание после sq-b
идти? Откуда у этого 0x01
?
- Подчеркивание соответствует, очевидно, так как он был заменен
- это внутри скобок так что в группе 1
- группа 1 является то, что вышло в замене (без подчеркивания)
Как это не показано в вашем вопросе, вы признали, что недостающее подчеркивание было преобразовано в u '\ x01'? –
Матиас, я не понимаю, что ты просишь или пытаешься мне сказать? Какое значение имеет порядковое значение 1? – fyngyrz
Я не знаю, это просто наблюдение, что при запуске вашего кода результирующая строка содержит «\ x01» в точном месте, где вы ожидаете «_» –