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

Я не сейчас , почему разработчики java-языка решили добавить оператор new к java-языку, но я не хочу его пропустить. Даже , если он может быть избыточным , если не разрешено давать классы, методы и поля с тем же именем, как и другие, которые уже были указаны в их ответах:

Потому что - это значительно улучшает читаемость. Каждый раз, когда я читал этот оператор new, я сразу понял, что рождается новый объект.

1518
задан Georgy 18 June 2019 в 10:56
поделиться

8 ответов

Обратите внимание, что rstrip не действует точно как Perl, чавкают (), потому что это не изменяет строку. Таким образом, в Perl:

$x="a\n";

chomp $x

результаты в $x являющийся "a".

, но в Python:

x="a\n"

x.rstrip()

будет означать, что значение x все еще "a\n". Даже x=x.rstrip() не всегда дает тот же результат, как он разделяет весь пробел от конца строки, не всего одну новую строку самое большее.

98
ответ дан Flimm 18 June 2019 в 10:56
поделиться

Канонический способ разделить символы конца строки (EOL) состоит в том, чтобы использовать строку 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 требует запаздывания '\r' как его символ EOL. Машина Windows, на которой я использовал это сообщение, добавила свой собственный '\r\n' символ EOL. Поэтому конец каждой строки был похож на '\r\r\n'. Используя rstrip ('\r\n') снял бы весь '\r\r\n', который не является тем, что я хотел. В этом случае я просто отрезал последние два символа вместо этого.

Примечание, что в отличие от Perl chomp функция, это разделит все указанные символы в конце строки, не всего один:

>>> "Hello\n\n\n".rstrip("\n")
"Hello"
138
ответ дан Flimm 18 June 2019 в 10:56
поделиться

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

>>> text = "line 1\nline 2\r\nline 3\nline 4"
>>> text.splitlines()
['line 1', 'line 2', 'line 3', 'line 4']
150
ответ дан Ryan Ginstrom 18 June 2019 в 10:56
поделиться
s = '''Hello  World \t\n\r\tHi There'''
# import the module string   
import string
# use the method translate to convert 
s.translate({ord(c): None for c in string.whitespace}
>>'HelloWorldHiThere'

С Заменой regex

s = '''  Hello  World 
\t\n\r\tHi '''
print(re.sub(r"\s+", "", s), sep='')  # \s matches all white spaces
>HelloWorldHi

\n, \t, \r

s.replace('\n', '').replace('\t','').replace('\r','')
>'  Hello  World Hi '

С regex

s = '''Hello  World \t\n\r\tHi There'''
regex = re.compile(r'[\n\r\t]')
regex.sub("", s)
>'Hello  World Hi There'

с Соединением

s = '''Hello  World \t\n\r\tHi There'''
' '.join(s.split())
>'Hello  World Hi There'
1
ответ дан 22 November 2019 в 20:13
поделиться

Сначала строки разделения затем присоединяются к ним любым разделителем, который Вы любите.

  x = ' '.join(x.splitlines())

должен работать как очарование.

0
ответ дан 22 November 2019 в 20:13
поделиться

Я не программирую на Python, но я наткнулся на FAQ на python.org, в котором пропагандируется S.rstrip ("\ r \ n") для python 2.2 или новее.

13
ответ дан 22 November 2019 в 20:13
поделиться

Я мог бы использовать что-то вроде этого:

import os
s = s.rstrip(os.linesep)

Я думаю, Проблема с rstrip ("\ n") заключается в том, что вы, вероятно, захотите убедиться, что разделитель строк является переносимым. (ходят слухи, что некоторые устаревшие системы используют "\ r \ n" ). Другая проблема заключается в том, что rstrip удаляет повторяющиеся пробелы. Надеюсь, os.linesep будет содержать правильные символы. выше работает для меня.

48
ответ дан 22 November 2019 в 20:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: