मैं पायथन में एक स्ट्रिंग से प्रमुख और अनुगामी व्हाट्सएप कैसे निकालूं?
उदाहरण के लिए:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
मैं पायथन में एक स्ट्रिंग से प्रमुख और अनुगामी व्हाट्सएप कैसे निकालूं?
उदाहरण के लिए:
" 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'
rstrip()
फ़ंक्शन का मतलब है । :-)
strip
के बजाय trim
, isinstance
के बजाय instanceof
, list
के बजाय array
, आदि, आदि क्यों न सिर्फ उपयोग नामों से हर कोई परिचित है ?? गीज़: पी
strip
मामले में, मैं पूरी तरह से सहमत हूं, लेकिन एक सूची एक सरणी से पूरी तरह से अलग है।
जैसा कि ऊपर दिए गए जवाबों में बताया गया है
myString.strip()
\ n, \ r, \ t, \ f, space जैसे सभी प्रमुख और अनुगामी व्हाट्सएप वर्णों को हटा देगा।
अधिक लचीलेपन के लिए निम्नलिखित का उपयोग करें
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()
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)))
यदि आप बाईं और दाईं ओर से रिक्त स्थान की संख्या को ट्रिम करना चाहते हैं , तो आप ऐसा कर सकते हैं:
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"
यह एक नियमित अभिव्यक्ति के साथ भी किया जा सकता है
import re
input = " Hello "
output = re.sub(r'^\s+|\s+$', '', input)
# output = 'Hello'
मैं पायथन में एक स्ट्रिंग से प्रमुख और अनुगामी व्हाट्सएप कैसे निकालूं?
तो नीचे दिए गए समाधान प्रमुख और अनुगामी व्हाट्सएपों के साथ-साथ मध्यवर्ती व्हाट्सएपों को भी हटा देंगे। जैसे अगर आपको कई व्हाट्सएप के बिना एक स्पष्ट स्ट्रिंग मान प्राप्त करने की आवश्यकता है।
>>> 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()
वह मिल जाएगा।