Python, заменяющий литерал \ n - PullRequest
0 голосов
/ 31 января 2019

Я не хотел спрашивать здесь, потому что в конце концов заставил это работать, но я не понимаю, почему мои другие попытки не были жизнеспособными.Это сводит меня с ума.Я просмотрел очень много форумов.

В настоящее время у меня есть

filedata.replace('\\n','')

, который удалил литерал \n, а затем

filedata = re.sub("': ;\d{5,6},\n'",', ',filedata)

, чтобы удалить последующее "дерьмо"в моем выходном файле

я не мог, на всю жизнь, поместить это в одну команду.Я не знаю, что мне не хватает, но это потому, что я не могу выбрать \n в re.sub (\\n не работает).И я не могу сбежать , в filedata.replace;\, не сработало, но \' работает, чтобы убежать '.

РЕДАКТИРОВАТЬ

Ввод:

Foo\nBarFoo,
Foo\nBarFoo

Желаемый вывод:

FooBarFoo, FooBarFoo

Это работает:

filedata = filedata.replace('\\n','')
filedata = re.sub(",\n",', ',filedata)

, поэтому первая строка заменяет literal \n, а вторая строка заменяет literal , и символ новой строки (\n).Что я не мог сделать, так это заставить .replace убежать , (\, и т. Д. Не сработало), и я не смогу уйти \n (перевод строки) в .sub (\\n и т. Д. Не сработало)).Поэтому мне пришлось сделать это в два разных этапа, хотя я бы предпочел сделать оба в одном.

Я понимаю, что есть другие способы просто удалить символы, если я на самом деле не заменяю, это просто упрощенный примерчто я делаюСпасибо.

1 Ответ

0 голосов
/ 31 января 2019

Вот два «однострочника», но оба требуют цепочки двух методов замены.

>>> filedata = 'Foo\nBarFoo,\nFoo\nBarFoo'

>>> filedata.replace(',\n', ', ').replace('\n', '')
'FooBarFoo, FooBarFoo'

>>> filedata.replace('\n', '').replace(',', ', ')
'FooBarFoo, FooBarFoo'
...