Python обрезать перевод строки

Как я могу удалить завершающий перевод строки в Python?

Что такое эквивалент Python функции Perl chomp , который удаляет последний символ строки, если это символ новой строки?

Хорошо, я переделал это так, чтобы люди не слишком сильно вас отмечали 🙂 Добро пожаловать в Stack Overflow, кроме нескольких странных правил, подобных этому, это довольно дружелюбное и разумное место!

Что такое «последний символ значения»? Что делает Chomp: удалить все завершающие новые строки или одну завершающую новую строку?

Ответ A +: если это произошло из-за того, что вы забыли open() файл с соответствующим параметром ‘newline = . ‘ для вашей платформы (универсальная поддержка новой строки), вам может не потребоваться его явное удаление.

27 ответов

Попробуйте метод rstrip() (см. doc Python 2 и Python 3)

>>> 'test string\n'.rstrip() 'test string' 

Метод Python rstrip() по умолчанию разделяет все виды конечных пробелов, а не одну новую строку, как Perl делает с chomp .

>>> 'test string \n \r\n\n\r \n\n'.rstrip() 'test string' 

Чтобы удалить только символы новой строки:

>>> 'test string \n \r\n\n\r \n\n'.rstrip('\n') 'test string \n \r\n\n\r ' 

Существуют также методы lstrip() и strip() :

>>> s = " \n\r\n \n abc def \n\r\n \n " >>> s.strip() 'abc def' >>> s.lstrip() 'abc def \n\r\n \n ' >>> s.rstrip() ' \n\r\n \n abc def' 

Я не Python, поэтому у меня нет ответа на этот вопрос, но Perl chomp () фактически удаляет разделитель входных записей с конца. Это новая строка в Unixy, но может отличаться (например, Windows), и она изменчива. Есть ли способ удалить это значение только один раз из конца строки?

@csde_rats, это не так: OS X использует \n для перевода строки, как и Unix. (До OS X MacOS использовал \r в качестве разделителя строк, но это закончилось 10 лет назад.)

@briandfoy Python имеет встроенную поддержку новых строк (только при чтении, а не при записи). Вы открываете файл в режиме «U» или «rU», а затем, независимо от Windows, Linux, Mac, независимо от того, к тому времени, когда текст достигает вашего кода Python, любой стиль новой строки заменяется на «\ n». Смотрите: python.org/dev/peps/pep-0278

Это удалит только первые \ n, но не все \ n. Что, если у меня есть строка как: «sadsa \ nsadas \ nsadsad \ n» Как я могу удалить ВСЕ новые строки? replace (‘\ n’, ») тоже не работает.

На всякий случай, если кто-то неправильно rstrip пример: аргумент для strip , rstrip , lstrip используется в качестве списка символов, а не строки. Так что ‘abcdedcba’.strip(«abc») дает def , а не cdedcba !

@AlixAxel Как указано выше @AlcubierreDrive, обработка переносимых строк означает, что они преобразуются в каноническую форму \n при чтении из файла. Тогда ваша программа, работающая со строками, никогда не увидит символы \r .

Я знаю, что это на самом деле не вопрос, но это упоминается в комментариях. Есть ли какая-либо причина, по которой text.rstrip(os.linesep) не будет работать независимо от операционной системы для достижения этой цели?

Я собираюсь продолжить и объяснить это, потому что я нуб, и я провел некоторое время, размышляя, почему это не работает. .strip() не изменяет строку (вероятно, имеет отношение к неизменным строкам). Если нет в командной строке, вам нужно «string = string.strip()»

Сам по себе rstrip () доставит вам много головной боли, если вы обрабатываете TSV с пустыми столбцами. Например, «foo \ tbar \ t \ t \ n» .rstrip () удалит последние два пустых столбца из ваших данных.

И я бы сказал, что «pythonic» способ получить строки без конечных символов новой строки — splitlines().

>>> text = "line 1\nline 2\r\nline 3\nline 4" >>> text.splitlines() ['line 1', 'line 2', 'line 3', 'line 4'] 

Канонический способ стирания символов конца строки (EOL) заключается в использовании метода string rstrip(), удаляющего любые конечные \r или\n. Ниже приведены примеры символов Mac, Windows и Unix EOL.

>>> 'Mac EOL\r'.rstrip('\r\n') 'Mac EOL' >>> 'Windows EOL\r\n'.rstrip('\r\n') 'Windows EOL' >>> 'Unix EOL\n'.rstrip('\r\n') 'Unix EOL' 

Использование ‘\ r\n’ в качестве параметра для rstrip означает, что оно будет лишать любую конечную комбинацию ‘\ r’ или ‘\n’. Вот почему он работает во всех трех случаях выше.

Этот нюанс имеет значение в редких случаях. Например, однажды мне пришлось обработать текстовый файл, содержащий сообщение HL7. Стандарт HL7 требует, чтобы в качестве символа EOL использовался конечный «\ r». Машина Windows, на которой я использовала это сообщение, добавила свой собственный символ «\ r\n» EOL. Поэтому конец каждой строки выглядел как «\ r\r\n». Использование rstrip (‘\ r\n’) удалило бы все «\ r\r\n», чего я не хотел. В этом случае я просто нарезал последние два символа.

Обратите внимание, что в отличие от функции Perl chomp это приведет к удалению всех указанных символов в конце строки, а не только к одному:

Обратите внимание, что современные приложения Mac OS X используют \ n. Только старые приложения Carbon, изначально написанные для Mac OS, используют \ r.

Источник

Remove \n From the String in Python

Remove \n From the String in Python

  1. Remove \n From the String in Python Using the str.strip() Method
  2. Remove \n From String Using str.replace() Method in Python
  3. Remove \n From String Using regex Method in Python

In this tutorial, we will look into the different ways to remove \n and \t from a string.

Remove \n From the String in Python Using the str.strip() Method

In order to remove \n from the string using the str.strip() method, we need to pass \n and \t to the method, and it will return the copy of the original string after removing \n and \t from the string.

string = "\tHello, how are you\n" print("Old String:") print("'" + string + "'")  string = string.strip('\n') string = string.strip('\t') print("New String:") print("'" + string + "'") 
Old String: ' Hello, how are you? ' New String: 'Hello, how are you?' 

Remove \n From String Using str.replace() Method in Python

The other way to remove \n and \t from a string is to use the str.replace() method. We should keep in mind that the str.replace() method will replace the given string from the whole thing, not just from the string’s start or end. If you only need to remove something from the start and end only, you should use the str.strip() method.

The str.replace() method two arguments as input, first is the character or string you want to be replaced, and second is the character or string you want to replace with. In the below example, since we just wanted to remove \n and \t , we have passed the empty string as the second argument.

string = "Hello, \nhow are you\t?\n" print("Old String:") print("'" + string + "'")  string = string.replace('\n',"") string = string.replace('\t',"") print("New String:") print("'" + string + "'") 
Old String: 'Hello, how are you ? ' New String: 'Hello, how are you?' 

Remove \n From String Using regex Method in Python

To remove \n from the string, we can use the re.sub() method. The below code example demonstrates how to remove \n using the re.sub() method. \n is the new line’s regular express pattern, and it will be replaced with the empty string — «» .

import re  string = "Hello, \nhow are you\n?" print("Old String:") print("'" + string + "'")  new_string = re.sub(r'\n', '', string) print("New String:") print("'" + new_string + "'") 
Old String: 'Hello, how are you ?' New String: 'Hello, how are you?' 

Related Article — Python String

Источник

Python: Remove Newline Character from String

Python Remove Newline Characters from String Cover Image

In this tutorial, you’ll learn how to use Python to remove newline characters from a string.

Working with strings in Python can be a difficult game, that often comes with a lot of pre-processing of data. Since the strings we find online often come with many issues, learning how to clean your strings can save you a lot of time. One common issue you’ll encounter is additional newline characters in strings that can cause issues in your work.

The Quick Answer: Use Python string.replace()

Quick Answer - Python Remove Newline Characters

What are Python Newline Characters

Python comes with special characters to let the computer know to insert a new line. These characters are called newline characters. These characters look like this: \n .

When you have a string that includes this character, the text following the newline character will be printed on a new line.

Let’s see how this looks in practice:

a_string = 'Hello!\nWelcome to Datagy!\nHow are you?\n' print(a_string) # Returns # Hello! # Welcome to Datagy! # How are you?

Now that you know how newline characters work in Python, let’s learn how you can remove them!

Use Python to Remove All Newline Characters from a String

Python’s strings come built in with a number of useful methods. One of these is the .replace() method, which does exactly what it describes: it allows you to replace parts of a string.

# Use string.replace() to replace newline characters in a string a_string = 'Hello!\n Welcome to Datagy!\n How are you?\n' a_string = a_string.replace('\n','') print(a_string) # Returns: Hello! Welcome to Datagy! How are you?

Let’s see what we’ve done here:

  1. We passed the string.replace() method onto our string
  2. As parameters, the first positional argument indicates what string we want to replace. Here, we specified the newline \n character.
  3. The second argument indicates what to replace that character with. In this case, we replaced it with nothing, thereby removing the character.

In this section, you learned how to use string.replace() to remove newline characters from a Python string. In the next section, you’ll learn how to replace trailing newlines.

Tip! If you want to learn more about how to use the .replace() method, check out my in-depth guide here.

Use Python to Remove Trailing Newline Characters from a String

There may be times in your text pre-processing that you don’t want to remove all newline characters, but only want to remove trailing newline characters in Python. In these cases, the .replace() method isn’t ideal. Thankfully, Python comes with a different string method that allows us to to strip characters from the trailing end of a string: the .rstrip() method.

Let’s dive into how this method works in practise:

# Remove trailing newline characters from a string in Python a_string = 'Hello! \nWelcome to Datagy! \nHow are you?\n' a_string = a_string.rstrip() print(a_string) # Returns # Hello! # Welcome to Datagy! # How are you?

The Python .rstrip() method works by removing any whitespace characters from the string. Because of this, we didn’t need to specify a new line character.

If you only wanted to remove newline characters, you could simply specify this, letting Python know to keep any other whitespace characters in the string. This would look like the line below:

a_string = a_string.rstrip('\n')

In the next section, you’ll learn how to use regex to remove newline characters from a string in Python.

Tip! If you want to learn more about the .rstrip() (as well as the .lstrip() ) method in Python, check out my in-depth tutorial here.

Use Python Regex to Remove Newline Characters from a String

Python’s built-in regular expression library, re , is a very powerful tool to allow you to work with strings and manipulate them in creative ways. One of the things we can use regular expressions (regex) for, is to remove newline characters in a Python string.

Let’s see how we can do this:

# Use regular expressions to remove newline characters from a string in Python import re a_string = 'Hello! \nWelcome to Datagy! \nHow are you?\n' a_string = re.sub('\n', '', a_string) print(a_string) # Returns: Hello! Welcome to Datagy! How are you?

Let’s see what we’ve done here:

  1. We imported re to allow us to use the regex library
  2. We use the re.sub() function, to which we passed three parameters: (1) the string we want to replace, (2), the string we want to replace it with, and (3) the string on which the replacement is to be done

It may seem overkill to use re for this, and it often is, but if you’re importing re anyway, you may as well use this approach, as it lets you do much more complex removals!

Conclusion

In this post, you learned how to use Python to remove newline characters from a string. You learned how to do this using the string.replace() method, how to replace trailing newlines using .rstrip() , and how to accomplish this using regular expression’s sub() function.

Additional Resources

To learn more about related topics, check out the resources below:

Источник

Читайте также:  Convert date to unix timestamp php
Оцените статью