Удалить Новые Строки Из Строки, Не Удаляя «n»?

#python

Вопрос:

Мне нужны данные для обучения бота, поэтому я наскреб ТАК много вопросов. Как я могу заменить новые строки, не удаляя n их из строк?

Если у меня есть следующая строка:

 """You can use n to print a new line.

Text text text."""
 

Как я могу получить: You can use n to print a new line. Text text text.

Я пробовал это: string.replace("n","")

Но в итоге я получаю: 'You can use to print a new line.Text text text.'

Поскольку я занимаюсь вопросами программирования, мне суждено столкнуться n со строкой и я не хотел бы ее заменять.

Комментарии:

1. n — это новые строки!

2. Это на самом деле не помогает мне понять, как решить мою проблему.

3. Это n в You can use n to print a new line. буквальном смысле или на самом деле две строки текста?

4. Покажите действительную строку в кавычках, я совсем не понимаю вашей цели

5. не имеет смысла, You can use n to print a new line. чтобы при печати была напечатана только одна строка, потому что тогда ваш код должен был сработать. Я надеюсь, вы понимаете разницу между буквальным символом новой строки и фактическим символом новой строки. Буквальная новая строка выглядит так, как n при печати. Фактическая новая строка переместит курсор на следующую строку. Если ваш текст содержит буквальные новые строки, то код, который у вас есть, должен работать, в противном случае вам следует переопределить свою цель как удаление любого экземпляра нескольких новых строк, т. Е. любой части вашего текста, которая соответствует регулярному nn выражению . Пожалуйста, уточните свою цель

Ответ №1:

вы можете распечатать его как настоящую строку

это делается с помощью буквы r

пример 1:

 print(r"You can use n to print a new line.") 
# You can use n to print a new line.
 

это не удалит его, но сделает его видимым так, как вы хотите, в выводе

пример 2:

 text = r"You can use n to print a new line."

print(text) 
# You can use n to print a new line.
 

Комментарии:

1. Это может быть лучшим вариантом, чем мой ответ 🙂

2. Это, похоже, не решает проблему замены новых строк в строке…

Ответ №2:

Если вы печатаете строку и вывод:

 You can use n to print a new line.

Text text text.
 

тогда n видимый в выходных данных на самом деле символ обратной косой черты , за которым следует буква n , а не символ новой строки.

replace("n", "") Выполнение не должно удалять последовательность символов n , потому что шаблон замены "n" сам по себе не является последовательностью символов n , а, скорее, фактическим одним символом новой строки. Таким образом, он не соответствует n последовательности символов, видимых в вашей строке, но он соответствует (и заменяет) символы новой строки.

Этот фрагмент реплика иллюстрирует, что:

 >>> x = """You can use \n to print a new line.nnText text text.""" # this string literal is how you would create the string you have shown in you question.
>>> x == r"""You can use n to print a new line.
... 
... Text text text.""" # or you can use a raw string literal to initialize your variable, it is exactly the same thing
True
>>> print(x)
You can use n to print a new line.

Text text text.
>>> print(x.replace("n", ""))
You can use n to print a new line.Text text text.
 

Если вы имеете в виду, что создаете строку с литералом:

 """You can use n to print a new line.

Text text text."""
 

Тогда невозможно провести различие между введенным n и результатом нажатия Enter клавиши в вашем строковом литерале (если вы не используете инициализатор необработанной строки, как объяснялось в других ответах). Как только код интерпретируется Python, они идентичны. Рассмотрите возможность экранирования символа новой строки в вашем литерале, чтобы включить его в строку как есть:

 myString = """You can use \n to print a new line.

Text text text."""
 

Ответ №3:

Если вы хотите преобразовать новые строки в литеральную строку n , вы можете избежать символа косой черты:

string.replace("n","\n")

Комментарии:

1. Это привело You can use n to print a new line.nnText text text. бы к тому, что, похоже, не то, чего хочет ОП. С другой стороны, этот вопрос не имеет никакого смысла…

2. @zr0gravity7 Да, вопрос не очень ясен. Похоже, для ОП сработал еще один ответ.

Ответ №4:

Строка n в вашей строке-это escape-последовательность, которая вычисляется до символа новой строки.

 In [1]: s = """You can use n to print a new line.
   ...:
   ...: Text text text."""

In [2]: print(s)
You can use
 to print a new line.

Text text text.
 

Если вы действительно хотите включить символы и n в свою строку, вам нужно избежать обратной косой черты с помощью другой обратной косой черты.

 In [3]: s = """You can use \n to print a new line.
   ...:
   ...: Text text text."""

In [4]: print(s)
You can use n to print a new line.

Text text text.

In [5]: print(s.replace("n", ""))
You can use n to print a new line.Text text text.
 

В качестве альтернативы вы можете использовать «необработанную строку», т. е. строку с префиксом r , например r"..." , или r"""...""" , но тогда вы больше не сможете использовать escape-последовательности, такие как n вставка символа новой строки, t вставка вкладки и т. Д.