উত্তর:
আপনি যদি ধরে নিতে না পারেন যে আপনার প্রসারণ করা সমস্ত স্ট্রিংয়ের ডাবল উদ্ধৃতি রয়েছে আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন:
if string.startswith('"') and string.endswith('"'):
string = string[1:-1]
সম্পাদনা:
আমি নিশ্চিত যে আপনি string
এখানে অনুকরণের জন্য ভেরিয়েবল নাম হিসাবে ব্যবহার করেছেন এবং আপনার আসল কোডে এটির একটি দরকারী নাম রয়েছে তবে আমি আপনাকে সতর্ক করতে বাধ্য হতে পারি যে string
স্ট্যান্ডার্ড লাইব্রেরিতে একটি মডিউল রয়েছে । এটি স্বয়ংক্রিয়ভাবে লোড করা হয়নি, তবে আপনি যদি কখনও ব্যবহার করেন import string
তবে নিশ্চিত হন যে আপনার ভেরিয়েবলটি এটি গ্রহন করে না।
প্রথম এবং শেষ অক্ষরগুলি সরাতে, এবং প্রতিটি ক্ষেত্রেই অপসারণটি কেবল তখনই করা হয় যদি প্রশ্নে থাকা অক্ষরটি দ্বিগুণ উদ্ধৃতি হয়:
import re
s = re.sub(r'^"|"$', '', s)
মনে রাখবেন যে আরআর প্যাটার্ন আপনি দিয়েছেন তার থেকে আলাদা এবং অপারেশনটি sub
("বিকল্প") খালি প্রতিস্থাপন স্ট্রিং সহ ( strip
একটি স্ট্রিং পদ্ধতি তবে আপনার প্রয়োজনীয়তা থেকে বেশ আলাদা কিছু করে, যেমন অন্যান্য উত্তরগুলি নির্দেশ করেছে)।
startsWith
।
গুরুত্বপূর্ণ: আমি একক বা ডাবল উদ্ধৃতি ফালা প্রশ্ন / উত্তর প্রসারিত করছি। এবং আমি প্রশ্নের ব্যাখ্যা করে বোঝাতে চাইছি যে স্ট্রিপটি সম্পাদন করার জন্য দুটি উদ্ধৃতি অবশ্যই উপস্থিত থাকতে হবে এবং মিলবে। অন্যথায়, স্ট্রিংটি অপরিবর্তিত অবস্থায় ফিরে আসে।
একটি স্ট্রিং প্রতিনিধিত্ব "সনাক্তকরণ" করতে, এর চারপাশে একক বা ডাবল উদ্ধৃতি থাকতে পারে (এটি @ টিগ্রির উত্তরের একটি এক্সটেনশন):
def dequote(s):
"""
If a string has single or double quotes around it, remove them.
Make sure the pair of quotes match.
If a matching pair of quotes is not found, return the string unchanged.
"""
if (s[0] == s[-1]) and s.startswith(("'", '"')):
return s[1:-1]
return s
ব্যাখ্যা:
startswith
একটি বিকল্প নিতে পারে, বেশ কয়েকটি বিকল্পের যে কোনওটির সাথে মেলে। দ্বিগুন প্রথম বন্ধনী জন্য কারণ ((
এবং ))
যে আমরা এক প্যারামিটার পাস তাই ("'", '"')
করতে startswith()
উপসর্গ বদলে দুটি প্যারামিটার অনুমতি নির্দিষ্ট করতে, "'"
এবং '"'
, যা একটি উপসর্গ এবং (অবৈধ) অবস্থান শুরু হিসেবে ব্যাখ্যা করা হবে।
s[-1]
স্ট্রিংয়ের শেষ অক্ষর।
পরীক্ষামূলক:
print( dequote("\"he\"l'lo\"") )
print( dequote("'he\"l'lo'") )
print( dequote("he\"l'lo") )
print( dequote("'he\"l'lo\"") )
=>
he"l'lo
he"l'lo
he"l'lo
'he"l'lo"
(আমার জন্য, রেজেক্স এক্সপ্রেশনগুলি পড়ার জন্য স্পষ্ট নয়, তাই আমি @ অ্যালেক্সের উত্তরটি প্রসারিত করার চেষ্টা করিনি))
len(s) >= 2
, বা অনুরূপ কিছু যুক্ত করতে পারেন ।
প্রায় শেষ. Http://docs.python.org/library/stdtypes.html?hightlight=strip#str.strip থেকে উদ্ধৃতি দেওয়া হচ্ছে
অক্ষর আর্গুমেন্ট একটি স্ট্রিং যা মুছে ফেলার জন্য অক্ষরের সেট নির্দিষ্ট করে।
[...]
অক্ষর যুক্তি একটি উপসর্গ বা প্রত্যয় নয়; বরং এর মানগুলির সমস্ত সংমিশ্রণগুলি ছিনিয়ে নেওয়া হয়:
সুতরাং যুক্তি একটি regexp নয়।
>>> string = '"" " " ""\\1" " "" ""'
>>> string.strip('"')
' " " ""\\1" " "" '
>>>
দ্রষ্টব্য, আপনি অনুরোধ করেছেন এটি ঠিক এটি নয়, কারণ এটি স্ট্রিংয়ের উভয় প্রান্ত থেকে একাধিক উক্তি খায়!
আমার কাছে এমন কিছু কোড রয়েছে যার একক বা ডাবল উদ্ধৃতিগুলি ছাঁটাই করতে হবে এবং আমি এটিকে কেবল অ্যাস্টলাইটাল_ইভাল করতে পারি না।
if len(arg) > 1 and arg[0] in ('"\'') and arg[-1] == arg[0]:
arg = arg[1:-1]
এটি সরঞ্জাম নির্মাতাস্টভের উত্তরের মতো, তবে এটি 0 দৈর্ঘ্যের স্ট্রিংগুলিকে মঞ্জুরি দেয় এবং একক অক্ষরকে "
খালি স্ট্রিংয়ে রূপান্তরিত করে না ।
ফাংশনের নীচে খালি স্পেসগুলি ছাঁটাই করবে এবং উদ্ধৃতিগুলি ছাড়াই স্ট্রিংগুলি ফিরিয়ে দেবে। যদি কোনও উদ্ধৃতি না থাকে তবে এটি একই স্ট্রিংটি ফিরবে (স্ট্রিপড)
def removeQuote(str):
str = str.strip()
if re.search("^[\'\"].*[\'\"]$",str):
str = str[1:-1]
print("Removed Quotes",str)
else:
print("Same String",str)
return str
শুরু করে Python 3.9
, আপনি removeprefix
এবং ব্যবহার করতে পারেন removesuffix
:
'"" " " ""\\1" " "" ""'.removeprefix('"').removesuffix('"')
# '" " " ""\\1" " "" "'
strip
, দয়া করে নোট করুন যে) ক) এই পদ্ধতিটি তার আর্গুমেন্ট হিসাবে কোনও রেজেক্স গ্রহণ করে না, খ) আপনার সরবরাহিত রেজেক্সটি কোনওভাবেই কাজ করবে না এবং গ) এই পদ্ধতিটি কেবল একটি নয়, সমস্ত সংলগ্ন চরিত্রগুলি সরিয়ে দেয় so আপনি দুটি ডাবল উদ্ধৃতি দিয়ে হারাতে হবে.strip('"')
।