development

문자열에서 공백을 어떻게 제거합니까?

big-blog 2020. 9. 27. 13:00
반응형

문자열에서 공백을 어떻게 제거합니까?


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

예를 들면 :

" 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'

위의 답변에서 지적했듯이

myString.strip()

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

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

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

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


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

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

이것은 모든 선행 및 후행 공백을 제거 합니다myString .

myString.strip()

strip ()을 원합니다.

myphrases = [ " Hello ", " Hello", "Hello ", "Bob has a cat" ]

for phrase in myphrases:
    print phrase.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)))

참고 URL : https://stackoverflow.com/questions/761804/how-do-i-trim-whitespace-from-a-string

반응형