긴 텍스트 문자열에서 모든 줄 바꿈 제거
기본적으로 사용자에게 콘솔에 텍스트 문자열을 입력하도록 요청하지만 문자열이 매우 길고 줄 바꿈이 많이 포함되어 있습니다.사용자의 문자열을 가져와서 모든 줄 바꿈을 삭제하여 텍스트 한 줄로 만드는 방법은 무엇입니까?나의 끈 획득 방법은 매우 간단합니다.
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
캐리지 리턴을 나타냅니다(창가에 있는 경우, 이것들과 1초를 받을 수 있습니다).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
파이썬에서 캐노닉한 대답은 다음과 같습니다.
s = ''.join(s.splitlines())
문자열을 줄로 분할합니다(Python이 자체 모범 사례에 따라 수행할 수 있도록 허용).그런 다음 병합합니다.여기에는 두 가지 가능성이 있습니다.
- 새 줄을 공백으로 바꿉니다(
' '.join()
) - 또는 공백 없이(
''.join()
)
을 기준으로 업데이트됨Xbello
댓글:
string = my_string.rstrip('\r\n')
자세한 내용은 여기를
다른 옵션은 정규식입니다.
>>> import re
>>> re.sub("\n|\r", "", "Foo\n\rbar\n\rbaz\n\r")
'Foobarbaz'
누군가 사용하기로 결정한 경우replace
당신은 노력해야 합니다.r'\n'
대신'\n'
mystring = mystring.replace(r'\n', ' ').replace(r'\r', '')
고려한 방법
- 문자열의 시작/끝에 추가적인 흰색 문자
- 모든 행의 시작/끝에 추가적인 흰색 문자
- 다양한 종점 문자
예를 들어 지저분할 수 있는 여러 줄의 문자열이 필요합니다.
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 '
정규식이 가장 빠른 방법입니다.
s='''some kind of
string with a bunch\r of
extra spaces in it'''
re.sub(r'\s(?=\s)','',re.sub(r'\s',' ',s))
결과:
'some kind of string with a bunch of extra spaces in it'
의 rstrip()
(나 자신이 거의 보지 못했듯이) 모든 경우에 효과가 없다는 것입니다.을 사용할 수 .
text = text.replace("\n"," ")
새 줄이 됩니다.'\n'
띄엄띄엄
당신은 정말로 모든 징후를 제거할 필요가 없습니다: lf cr crlf.
# Pythonic:
r'\n', r'\r', r'\r\n'
일부 텍스트는 반드시 중단되어야 하지만, 특정 문장을 함께 유지하기 위해서는 아마도 끊어진 선을 연결해야 할 것입니다.
따라서 줄 바꿈은 priod, 세미콜론, 콜론 뒤에 발생하지만 쉼표 뒤에는 발생하지 않습니다.
나의 코드는 위의 조건을 고려합니다.pdfs에서 복사한 텍스트와 잘 작동합니다.즐겨보세요!:
def unbreak_pdf_text(raw_text):
""" the newline careful sign removal tool
Args:
raw_text (str): string containing unwanted newline signs: \\n or \\r or \\r\\n
e.g. imported from OCR or copied from a pdf document.
Returns:
_type_: _description_
"""
pat = re.compile((r"[, \w]\n|[, \w]\r|[, \w]\r\n"))
breaks = re.finditer(pat, raw_text)
processed_text = raw_text
raw_text = None
for i in breaks:
processed_text = processed_text.replace(i.group(), i.group()[0]+" ")
return processed_text
언급URL : https://stackoverflow.com/questions/16566268/remove-all-line-breaks-from-a-long-string-of-text
'programing' 카테고리의 다른 글
SQL Server가 저장 프로시저에서 varchar를 자동으로 잘라냅니다. (0) | 2023.07.15 |
---|---|
gdb에 여러 개의 기호 파일을 로드하는 방법 (0) | 2023.07.15 |
데이터 프레임의 열을 열 이름별로 정렬 (0) | 2023.07.15 |
깃풀 미리보기 방법? (0) | 2023.07.15 |
장고를 사용하여 표의 모든 데이터를 제거하는 방법 (0) | 2023.07.15 |