답변:
하나의 공백 또는 모든 연속 공백? 두 번째 경우 문자열에는 이미 .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'
rstrip()
함수 를 의미한다고 생각합니다 . :-)
strip
대신 trim
, isinstance
대신 instanceof
, list
대신 array
, 등, 등 왜 그냥 사용 모두가 친숙한 이름 ?? geez : P
strip
의 경우 @GershomMaes , 나는 완전히 동의하지만 목록은 배열과 완전히 다릅니다.
위의 답변에서 지적했듯이
myString.strip()
\ n, \ r, \ t, \ f, 공백과 같은 모든 선행 및 후행 공백 문자를 제거합니다.
유연성을 높이려면 다음을 사용하십시오.
myString.lstrip()
myString.rstrip()
myString.strip('\n')
나 myString.lstrip('\n\r')
또는 myString.rstrip('\n\t')
등등.자세한 내용은 문서 에서 확인할 수 있습니다
이렇게하면 다음의 모든 공백 이 제거 됩니다 myString
.
myString.strip()
myString.strip()
내가 말한 질문 중 하나에 답하지 않습니다.
문자열에서 너무 많은 공백을 제거하고 싶었습니다 (시작 부분이나 끝 부분뿐만 아니라 문자열 사이). 나는 그렇지 않으면 어떻게 해야할지 모르기 때문에 이것을 만들었다.
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)
더 이상 이중 공간이 없을 때까지 한 공간의 이중 공간을 대체합니다.
내가 찾고있는 것에 대한 해결책을 찾지 못해 일부 사용자 정의 함수를 만들었습니다. 시도해 볼 수 있습니다.
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)))
left 및 right에서 지정된 수의 공백 을 자르 려면 다음을 수행하십시오.
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"
파이썬에서 문자열에서 선행 및 후행 공백을 어떻게 제거합니까?
따라서 아래 솔루션은 중간 및 공백뿐만 아니라 선행 및 후행 공백을 제거합니다. 여러 공백없이 명확한 문자열 값을 가져와야하는 것처럼.
>>> 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()
찾을 수 있습니다.