programing tip

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

itbloger 2020. 7. 30. 10:06
반응형

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


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

string = raw_input("Please enter string: ")

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

PS 분명히 나는 ​​멍청한 사람이므로 솔루션이 가장 효율적이지 않더라도 가장 간단한 구문을 사용하는 솔루션을 높이 평가할 것입니다.


줄 바꿈을 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 replace를 사용해보십시오.

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 '


rstrip의 문제점은 모든 경우에 작동하지 않는다는 것입니다. 대신-text = text.replace ( "\ n", "")를 사용하면 공백이있는 모든 새 줄 \ n이 제거됩니다.

귀하의 투표에 미리 감사드립니다.

참고 URL : https://stackoverflow.com/questions/16566268/remove-all-line-breaks-from-a-long-string-of-text

반응형