Làm cách nào để xóa khoảng trắng hàng đầu và dấu kiểm khỏi chuỗi trong Python?
Ví dụ:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
Làm cách nào để xóa khoảng trắng hàng đầu và dấu kiểm khỏi chuỗi trong Python?
Ví dụ:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
Câu trả lời:
Chỉ cần một không gian, hoặc tất cả các không gian liên tiếp? Nếu thứ hai, thì các chuỗi đã có một .strip()
phương thức:
>>> ' 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'
Tuy nhiên, nếu bạn chỉ cần xóa một khoảng trắng, bạn có thể thực hiện với:
def strip_one_space(s):
if s.endswith(" "): s = s[:-1]
if s.startswith(" "): s = s[1:]
return s
>>> strip_one_space(" Hello ")
' Hello'
Ngoài ra, lưu ý rằng cũng str.strip()
loại bỏ các ký tự khoảng trắng khác (ví dụ: tab và dòng mới). Để chỉ xóa khoảng trắng, bạn có thể chỉ định ký tự cần xóa làm đối số strip
, nghĩa là:
>>> " Hello\n".strip(" ")
'Hello\n'
rstrip()
chức năng. :-)
strip
thay vì trim
, isinstance
thay vì instanceof
, list
thay vì array
, v.v. Tại sao không chỉ sử dụng những cái tên ai cũng quen thuộc ?? geez: P
strip
trường hợp của tôi, tôi hoàn toàn đồng ý, nhưng một danh sách hoàn toàn khác với một mảng.
Như đã chỉ ra trong câu trả lời ở trên
myString.strip()
sẽ xóa tất cả các ký tự khoảng trắng ở đầu và cuối như \ n, \ r, \ t, \ f, dấu cách.
Để linh hoạt hơn, hãy sử dụng như sau
myString.lstrip()
myString.rstrip()
myString.strip('\n')
hoặc myString.lstrip('\n\r')
hoặc myString.rstrip('\n\t')
như vậy.Thêm chi tiết có sẵn trong các tài liệu
strip
cũng không giới hạn ở các ký tự khoảng trắng:
# remove all leading/trailing commas, periods and hyphens
title = title.strip(',.-')
Điều này sẽ xóa tất cả khoảng trắng hàng đầu và dấu trong myString
:
myString.strip()
myString.strip()
câu trả lời không ai trong số những câu hỏi tôi đã nêu.
Tôi muốn loại bỏ quá nhiều khoảng trắng trong một chuỗi (cũng ở giữa chuỗi, không chỉ ở đầu hoặc cuối). Tôi đã làm điều này, bởi vì tôi không biết làm thế nào khác:
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)
Điều này thay thế không gian đôi trong một không gian cho đến khi bạn không còn không gian đôi nữa
Tôi không thể tìm thấy giải pháp cho những gì tôi đang tìm kiếm vì vậy tôi đã tạo một số chức năng tùy chỉnh. Bạn có thể thử chúng ra.
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)))
Nếu bạn muốn cắt bớt số lượng không gian được chỉ định từ trái và phải , bạn có thể làm điều này:
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"
Điều này cũng có thể được thực hiện với một biểu thức thông thường
import re
input = " Hello "
output = re.sub(r'^\s+|\s+$', '', input)
# output = 'Hello'
Làm cách nào để xóa khoảng trắng hàng đầu và dấu kiểm khỏi chuỗi trong Python?
Vì vậy, giải pháp dưới đây sẽ loại bỏ các khoảng trắng hàng đầu và dấu cũng như các khoảng trắng trung gian. Giống như nếu bạn cần để có được một giá trị chuỗi rõ ràng mà không cần nhiều khoảng trắng.
>>> 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
Như bạn có thể thấy điều này sẽ loại bỏ tất cả nhiều khoảng trắng trong chuỗi (đầu ra là Hello World
cho tất cả). Địa điểm không quan trọng. Nhưng nếu bạn thực sự cần khoảng trắng hàng đầu và dấu, thì strip()
sẽ được tìm thấy.