Python регулярное выражение для удаления всех разрывов строк в одну строку - PullRequest
0 голосов
/ 28 февраля 2020

У меня проблема, когда возврат строки вызывает проблему в моих вызовах API, и я хочу убедиться, что возврат строки не портит мое json форматирование.

Лучший способ, которым я мог думать из было удалить все разрывы строк, чтобы весь текст был в одной строке. Я пробовал такие способы, как re.sub(r'\s+', '',{{test\n\ntext\n\netc.}}) или замена \n и \r, но это приводит к тексту, как

test

text

et c.

на отдельных строках. Как я могу настроить это на что-то вроде теста | текст | и др c.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Попробуйте это

import re
txt = "Python\n Regex\n to remove all\r line breaks to\r a single line"
print(txt)
x = re.sub(r"\n|\r", "|", txt)
print(x)
  • re.sub Заменяет один или несколько совпадений на строку.
  • | действует как Либо, так и персонаж
0 голосов
/ 28 февраля 2020

Используйте .replace для замены \n пустой последовательностью:

str = "{test\n\ntext\nnetc."
print(str.replace("\n",""))

Если вы хотите заменить новую строку на |, напишите это так:

str.replace("\n","|"))

Вывод:

{test||text|netc.

Редактировать: Конечно, это приведет к наличию нескольких | в вашем выводе. Чтобы уменьшить это для нескольких новых появлений на линии, мы можем использовать метод редуктора.

Вот что я нашел из этого поста .

def squeeze(char,s):
    while char*2 in s:
        s=s.replace(char*2,char)
    return s

Используя это, вы можете видеть, что он выдаст только один раз для нескольких случаев:

def squeeze(char,s):
    while char*2 in s:
        s=s.replace(char*2,char)
    return s

str = "{more\n\rdata\r\r\r\ntest\n\n\n\n\ntext\n\n\netc.}"
reducedNewLines = squeeze("\n", str)
reducedNewLines = reducedNewLines.replace("\r", "")  #take out all the \r as well
print(reducedNewLines.replace("\n"," | "))

Выход:

{more | data | test | text | etc.}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...