[python] 긴 텍스트 문자열에서 모든 줄 바꿈 제거

기본적으로 사용자에게 텍스트 문자열을 콘솔에 입력하도록 요청하고 있지만 문자열이 매우 길고 많은 줄 바꿈이 포함됩니다. 사용자의 문자열을 가져와 모든 줄 바꿈을 삭제하여 한 줄의 텍스트로 만드는 방법은 무엇입니까? 문자열을 얻는 방법은 매우 간단합니다.

string = raw_input("Please enter string: ")

사용자로부터 문자열을 잡아야하는 다른 방법이 있습니까? Mac에서 Python 2.7.4를 실행하고 있습니다.

추신 : 분명히 나는 ​​멍청한 사람이므로 솔루션이 가장 효율적이지 않더라도 가장 간단한 구문을 사용하는 솔루션을 고맙게 생각합니다.



답변

줄 바꿈은 raw_input어떻게 입력 합니까? 그러나, 일단 당신이 제거하고 싶은 문자가있는 문자열이 있으면, replace그것들 만 제거하십시오 .

>>> mystr = raw_input('please enter string: ')
please enter string: hello world, how do i enter line breaks?
>>> # pressing enter didn't work...
...
>>> mystr
'hello world, how do i enter line breaks?'
>>> mystr.replace(' ', '')
'helloworld,howdoienterlinebreaks?'
>>>

위의 예에서는 모든 공백을 교체했습니다. 문자열 '\n'은 개행을 나타냅니다. 그리고 \r캐리지 리턴을 나타냅니다 (창문을 사용하는 경우 이러한 정보를 얻을 수 있으며 두 번째 replace가이를 처리합니다!).

원래:

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')

또한 변수를 호출하는 것은 좋지 않습니다 . string이는 모듈을 가리기 때문 string입니다. 피하고 싶지만 가끔 사용하고 싶은 또 다른 이름 : file. 같은 이유로.


답변

문자열 바꾸기를 사용해 볼 수 있습니다.

string = string.replace('\r', '').replace('\n', '')


답변

연속 된 공백을 단일 구분 기호 (줄 바꿈 및 탭 포함)로 처리하는 구분자 인수없이 문자열을 분할 할 수 있습니다. 그런 다음 스페이스를 사용하여 참여하십시오.

In : " ".join("\n\nsome    text \r\n with multiple whitespace".split())
Out: 'some text with multiple whitespace'

https://docs.python.org/2/library/stdtypes.html#str.split


답변

Xbello댓글에 따라 업데이트 됨 :

string = my_string.rstrip('\r\n')

여기에서 더 많은 것을 읽으 십시오


답변

또 다른 옵션은 정규식입니다.

>>> import re
>>> re.sub("\n|\r", "", "Foo\n\rbar\n\rbaz\n\r")
'Foobarbaz'


답변

고려하는 방법

  • 문자열의 시작 / 끝에 추가 흰색 문자
  • 모든 줄의 시작 / 끝에 추가 흰색 문자
  • 다양한 끝줄 문자

예를 들어 지저분해질 수있는 여러 줄 문자열을 사용합니다.

test_str = '\nhej ho \n aaa\r\n   a\n '

멋진 한 줄 문자열을 생성합니다.

>>> ' '.join([line.strip() for line in test_str.strip().splitlines()])
'hej ho aaa a'

업데이트 : 중복 공백을 생성하는 여러 줄 바꾸기 문자를 수정하려면 :

' '.join([line.strip() for line in test_str.strip().splitlines() if line.strip()])

이것은 다음에서도 작동합니다.
test_str = '\nhej ho \n aaa\r\n\n\n\n\n a\n '


답변

누군가를 사용하기로 결정했다면 대신 replace시도해야 r'\n'합니다.'\n'

mystring = mystring.replace(r'\n', ' ').replace(r'\r', '')