পাইথনের স্ট্রিং থেকে আমি কীভাবে নেতৃস্থানীয় এবং অনুসরণকারী শ্বেত স্পেস সরিয়ে ফেলব?
উদাহরণ স্বরূপ:
" 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()
leading n, tra 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()
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'
পাইথনের স্ট্রিং থেকে আমি কীভাবে নেতৃস্থানীয় এবং অনুসরণকারী শ্বেত স্পেস সরিয়ে ফেলব?
সুতরাং নীচের সমাধানটি অগ্রণী এবং পেছনের সাদা স্থান পাশাপাশি মধ্যবর্তী সাদা স্থানগুলিকেও সরিয়ে ফেলবে। আপনার যদি একাধিক শ্বেতস্পেস ছাড়াই একটি পরিষ্কার স্ট্রিং মানগুলি পাওয়া দরকার Like
>>> 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()
এটি সন্ধান করা হবে।