#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
вставка вкладки и т. Д.