У меня есть список списков (неправильной длины подсписков), над которыми я хочу выполнить re
операций, но не могу заставить его работать. Я уверен, что мне не хватает чего-то светского; кто-то может указать, что я делаю не так?
Рассмотрим следующие фрагменты кода:
test_list = [ # sample list of lists in which I want to replace the "\n"
["test\n\n\n\n\n\n\n\n", "another test\n", "spam"],
["egg\n\n", "house"],
["\n\nabc", "def\n", "\n\n\nghi", "jklm\n\n", "nop(e)", "\nqrst\n"],
["uvw\n", "\n\nx", "yz\n\n"]]
for item in test_list:
for subitem in item:
re.sub('\n', '___', subitem)
pprint.pprint(test_list)
Выход:
[['test\n\n\n\n\n\n\n\n', 'another test\n', 'spam'],
['egg\n\n', 'house'],
['\n\nabc', 'def\n', '\n\n\nghi', 'jklm\n\n', 'nop(e)', '\nqrst\n'],
['uvw\n', '\n\nx', 'yz\n\n']]
(вывод неизменен - замена не сработала.)
Заранее спасибо за помощь.
Edit:
Спасибо Wiktor Stribiżew за ссылку. Первый совет из упомянутого вопроса - строка неизменна! - был полезен, но я не могу заставить его работать для списка списков .
Следуя советам здесь и здесь , мой код выглядит следующим образом:
newtestlist = [[re.sub("\n", '_', item) for subitem in item] for item in testlist]
Однако это не работает (выбрасывая TypeError: expected string or bytes-like object
- я неправильно ссылаюсь на подпункты моего списка.)
Может ли кто-нибудь указать мне правильное направление? Большое спасибо