etc./StackOverFlow

문자열에서 공백을 어떻게 트리밍합니까?

청렴결백한 만능 재주꾼 2023. 4. 24. 06:47
반응형

질문자 :robert


Python의 문자열에서 선행 및 후행 공백을 어떻게 제거합니까?

예를 들어:

 " Hello " --> "Hello" " Hello" --> "Hello" "Hello " --> "Hello" "Bob has a cat" --> "Bob has a cat"


하나의 공백 또는 모든 연속 공백? 두 번째 경우 문자열에는 이미 .strip() 메서드가 있습니다.

 >>> ' Hello '.strip() 'Hello' >>> ' Hello'.strip() 'Hello' >>> 'Bob has a cat'.strip() 'Bob has a cat' >>> ' Hello '.strip() # ALL consecutive spaces at both ends removed 'Hello'

그러나 하나의 공백만 제거해야 하는 경우 다음을 사용하여 수행할 수 있습니다.

 def strip_one_space(s): if s.endswith(" "): s = s[:-1] if s.startswith(" "): s = s[1:] return s >>> strip_one_space(" Hello ") ' Hello'

또한 str.strip() 은 다른 공백 문자(예: 탭 및 줄 바꿈)도 제거합니다. 공백만 제거하려면 제거할 문자를 strip 의 인수로 지정할 수 있습니다. 예:

 >>> " Hello\n".strip(" ") 'Hello\n'

Brian

위의 답변에서 지적했듯이

 my_string.strip()

\n , \r , \t , \f , 공백과 같은 모든 선행 및 후행 공백 문자를 제거합니다. .

더 많은 유연성을 위해 다음을 사용하십시오.

  • 선행 공백 문자만 제거 my_string.lstrip()
  • 후행 공백 문자만 제거 my_string.rstrip()
  • 특정 공백 문자를 제거합니다 my_string.strip('\n') 또는 my_string.lstrip('\n\r') 또는 my_string.rstrip('\n\t') 등.

자세한 내용은 문서 에서 확인할 수 있습니다.


Mudit Jain

strip 은 공백 문자로 제한되지 않습니다.

 # remove all leading/trailing commas, periods and hyphens title = title.strip(',.-')

Drew Noakes

myString 모든 선행 및 후행 공백이 제거됩니다.

 myString.strip()

Deniz Dogan

당신은 strip() 원합니다:

 myphrases = [" Hello ", " Hello", "Hello ", "Bob has a cat"] for phrase in myphrases: print(phrase.strip())

vezult

이것은 정규 표현식으로도 수행할 수 있습니다.

 import re input = " Hello " output = re.sub(r'^\s+|\s+$', '', input) # output = 'Hello'

James McGuigan

이 스레드를 초보자로 보고 머리가 빙글빙글 돌았습니다. 그래서 간단한 단축키를 생각해 냈습니다.

str.strip() 은 선행 및 후행 공백을 제거하기 위해 작동하지만 문자 사이의 공백에는 아무 것도 하지 않습니다.

 words=input("Enter the word to test") # If I have a user enter discontinous threads it becomes a problem # input = " he llo, ho w are y ou " n=words.strip() print(n) # output "he llo, ho w are y ou" - only leading & trailing spaces are removed

대신 str.replace() 를 사용하여 더 이해하고 오류를 줄이고 요점을 더 많이 이해하십시오. 다음 코드는 str.replace() 사용을 일반화할 수 있습니다.

 def whitespace(words): r=words.replace(' ','') # removes all whitespace n=r.replace(',','|') # other uses of replace return n def run(): words=input("Enter the word to test") # take user input m=whitespace(words) #encase the def in run() to imporve usability on various functions o=m.count('f') # for testing return m,o print(run()) output- ('hello|howareyou', 0)

diff에서 동일한 것을 상속하는 동안 도움이 될 수 있습니다. 기능.


Chidhvilas

Python에서 완성된 코드나 프로그램을 실행할 때 많은 들여쓰기 오류를 일으키는 "공백"을 제거하기 위해. 다음을 수행하십시오. 분명히 Python이 오류(들)가 1,2,3,4,5 등의 줄에서 들여쓰기라고 계속 말하는 경우 해당 줄을 앞뒤로 수정하면 됩니다.

그러나 입력 실수, 연산자 등과 관련된 프로그램에 대한 문제가 계속 발생하면 Python에서 오류가 발생하는 이유를 읽으십시오.

가장 먼저 확인해야 할 것은 들여쓰기가 올바른지 확인하는 것입니다. 그렇다면 코드에 공백이 있는 혼합 탭이 있는지 확인하십시오.

기억하십시오: 코드는 (당신에게는) 괜찮아 보이지만 인터프리터는 실행을 거부합니다. 이것이 의심되는 경우 빠른 수정은 코드를 IDLE 편집 창으로 가져온 다음 편집...을 선택하는 것입니다. 그런 다음 형식을 선택하기 전에 메뉴 시스템에서 모두 선택..."탭화 해제 영역을 선택하십시오. 탭과 공백을 혼합한 경우 모든 탭을 한 번에 공백으로 변환하고 들여쓰기 문제를 수정합니다.


NYCRodriguez

내가 찾고 있는 것에 대한 솔루션을 찾을 수 없어서 몇 가지 사용자 정의 기능을 만들었습니다. 당신은 그들을 시험해 볼 수 있습니다.

 def cleansed(s: str): """:param s: String to be cleansed""" assert s is not (None or "") # return trimmed(s.replace('"', '').replace("'", "")) return trimmed(s) def trimmed(s: str): """:param s: String to be cleansed""" assert s is not (None or "") ss = trim_start_and_end(s).replace(' ', ' ') while ' ' in ss: ss = ss.replace(' ', ' ') return ss def trim_start_and_end(s: str): """:param s: String to be cleansed""" assert s is not (None or "") return trim_start(trim_end(s)) def trim_start(s: str): """:param s: String to be cleansed""" assert s is not (None or "") chars = [] for c in s: if c is not ' ' or len(chars) > 0: chars.append(c) return "".join(chars).lower() def trim_end(s: str): """:param s: String to be cleansed""" assert s is not (None or "") chars = [] for c in reversed(s): if c is not ' ' or len(chars) > 0: chars.append(c) return "".join(reversed(chars)).lower() s1 = ' b Beer ' s2 = 'Beer b ' s3 = ' Beer b ' s4 = ' bread butter Beer b ' cdd = trim_start(s1) cddd = trim_end(s2) clean1 = cleansed(s3) clean2 = cleansed(s4) print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s1, len(s1), cdd, len(cdd))) print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s2, len(s2), cddd, len(cddd))) print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s3, len(s3), clean1, len(clean1))) print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s4, len(s4), clean2, len(clean2)))

Mitch

왼쪽과 오른쪽에서 지정된 수의 공백 을 자르려면 다음과 같이 할 수 있습니다.

 def remove_outer_spaces(text, num_of_leading, num_of_trailing): text = list(text) for i in range(num_of_leading): if text[i] == " ": text[i] = "" else: break for i in range(1, num_of_trailing+1): if text[-i] == " ": text[-i] = "" else: break return ''.join(text) txt1 = " MY name is " print(remove_outer_spaces(txt1, 1, 1)) # result is: " MY name is " print(remove_outer_spaces(txt1, 2, 3)) # result is: " MY name is " print(remove_outer_spaces(txt1, 6, 8)) # result is: "MY name is"

Dounchan

Python의 문자열에서 선행 및 후행 공백을 어떻게 제거합니까?

따라서 아래 솔루션은 선행 및 후행 공백과 중간 공백도 제거합니다. 여러 공백 없이 명확한 문자열 값을 가져와야 하는 경우와 같습니다.

 >>> str_1 = ' Hello World' >>> print(' '.join(str_1.split())) Hello World >>> >>> >>> str_2 = ' Hello World' >>> print(' '.join(str_2.split())) Hello World >>> >>> >>> str_3 = 'Hello World ' >>> print(' '.join(str_3.split())) Hello World >>> >>> >>> str_4 = 'Hello World ' >>> print(' '.join(str_4.split())) Hello World >>> >>> >>> str_5 = ' Hello World ' >>> print(' '.join(str_5.split())) Hello World >>> >>> >>> str_6 = ' Hello World ' >>> print(' '.join(str_6.split())) Hello World >>> >>> >>> str_7 = 'Hello World' >>> print(' '.join(str_7.split())) Hello World

보시다시피 이것은 문자열의 여러 공백을 모두 제거합니다(출력은 Hello World 입니다). 위치는 중요하지 않습니다. 그러나 선행 및 후행 공백이 정말로 필요한 경우에는 strip() 을 찾을 수 있습니다.


Kushan Gunasekera

문자열에서 너무 많은 공백을 제거하고 싶었습니다(시작 또는 끝뿐만 아니라 문자열 사이에도 있음). 나는 이것을 다른 방법으로 수행하는 방법을 모르기 때문에 이것을 만들었습니다.

 string = "Name : David Account: 1234 Another thing: something " ready = False while ready == False: pos = string.find(" ") if pos != -1: string = string.replace(" "," ") else: ready = True print(string)

더 이상 이중 공백이 없을 때까지 한 공간의 이중 공백을 대체합니다.


Marjan

출처 : http:www.stackoverflow.com/questions/761804/how-do-i-trim-whitespace-from-a-string

반응형