পাইথনের কি কোনও ফাংশন রয়েছে যা আমি নিয়মিত অভিব্যক্তিতে বিশেষ অক্ষরগুলি থেকে বাঁচতে ব্যবহার করতে পারি?
উদাহরণস্বরূপ, I'm "stuck" :\
হয়ে উঠতে হবেI\'m \"stuck\" :\\
।
পাইথনের কি কোনও ফাংশন রয়েছে যা আমি নিয়মিত অভিব্যক্তিতে বিশেষ অক্ষরগুলি থেকে বাঁচতে ব্যবহার করতে পারি?
উদাহরণস্বরূপ, I'm "stuck" :\
হয়ে উঠতে হবেI\'m \"stuck\" :\\
।
উত্তর:
ব্যবহার re.escape
>>> import re
>>> re.escape(r'\ a.*$')
'\\\\\\ a\\.\\*\\$'
>>> print(re.escape(r'\ a.*$'))
\\\ a\.\*\$
>>> re.escape('www.stackoverflow.com')
'www\\.stackoverflow\\.com'
>>> print(re.escape('www.stackoverflow.com'))
www\.stackoverflow\.com
এখানে এটি পুনরাবৃত্তি:
re.escape (STRING)
সমস্ত অ-অক্ষরসংখ্যক ব্যাকস্ল্যাশযুক্ত স্ট্রিং ফেরত দিন; আপনি যদি কোনও সালিসী আক্ষরিক স্ট্রিংয়ের সাথে এটির নিয়মিত এক্সপ্রেশন মেটাচার্যাকার থাকতে পারে তার সাথে মিল করতে চান তবে এটি কার্যকর।
পাইথন হিসাবে 3.7 re.escape()
কেবলমাত্র অক্ষরগুলি পালাতে পাল্টানো হয়েছিল যা রেজেক্স অপারেশনগুলির জন্য অর্থপূর্ণ are
regex.escape(pattern,string,special_only=True
আমি অবাক হয়েছি কেউ এর মাধ্যমে নিয়মিত এক্সপ্রেশন ব্যবহারের কথা উল্লেখ করেনি re.sub()
:
import re
print re.sub(r'([\"])', r'\\\1', 'it\'s "this"') # it's \"this\"
print re.sub(r"([\'])", r'\\\1', 'it\'s "this"') # it\'s "this"
print re.sub(r'([\" \'])', r'\\\1', 'it\'s "this"') # it\'s\ \"this\"
গুরুত্বপূর্ণ বিষয়গুলি লক্ষ্য করুন:
\
অক্ষর (গুলি) আপনি যা খুঁজছেন সেইসাথে। আপনি \
আপনার চরিত্রগুলি থেকে বাঁচতে ব্যবহার করতে যাচ্ছেন , সুতরাং আপনাকেও সেগুলি পালাতে
হবে ।([\"])
, যাতে প্রতিস্থাপনের
প্যাটার্নটি \
সামনে যুক্ত করার সময় এটি পাওয়া অক্ষরটি ব্যবহার করতে পারে । (তাতে কি
\1
করে: প্রথম প্রথম বন্ধনীযুক্ত গোষ্ঠীর মান ব্যবহার করে))r
সামনে r'([\"])'
উপায়ে এটি একটি এর কাঁচা স্ট্রিং । কাঁচা স্ট্রিং ব্যাকস্ল্যাশগুলি এড়াতে বিভিন্ন নিয়ম ব্যবহার করে। ([\"])
একটি সরল স্ট্রিং হিসাবে লিখতে , আপনাকে সমস্ত ব্যাকস্ল্যাশগুলি দ্বিগুণ করে লিখতে হবে '([\\"])'
। আপনি যখন নিয়মিত এক্সপ্রেশন লিখেন তখন কাঁচা স্ট্রিং বন্ধুত্বপূর্ণ হয়।\
একটি ব্যাকস্ল্যাশ করে একটি প্রতিকল্পন গ্রুপ পূর্বে যেমন থেকে আলাদা, তাদের \1
, অত r'\\\1'
। এটি সরল স্ট্রিং হিসাবে লিখতে
আপনার প্রয়োজন হবে '\\\\\\1'
- এবং কেউ এটি চায় না।Repr () [1: -1] ব্যবহার করুন। এই ক্ষেত্রে, ডাবল উদ্ধৃতি এড়ানো প্রয়োজন হয় না। [-1: 1] স্লাইসটি শুরুর এবং শেষ থেকে একক উদ্ধৃতি সরিয়ে ফেলা হয়।
>>> x = raw_input()
I'm "stuck" :\
>>> print x
I'm "stuck" :\
>>> print repr(x)[1:-1]
I\'m "stuck" :\\
অথবা হতে পারে আপনি কেবল আপনার প্রোগ্রামে পেস্ট করার জন্য একটি শব্দগুচ্ছটি এড়াতে চান? যদি তা হয় তবে এটি করুন:
>>> raw_input()
I'm "stuck" :\
'I\'m "stuck" :\\'
repr(x)[2:-1]
print(repr("I'm stuck")[1:-1])
প্রিন্ট I'm stuck
।
যেমনটি উপরে উল্লিখিত ছিল, উত্তরটি আপনার ক্ষেত্রে নির্ভর করে। আপনি যদি নিয়মিত অভিব্যক্তির জন্য কোনও স্ট্রিং থেকে বাঁচতে চান তবে আপনার পুনরায় পরীক্ষা () ব্যবহার করা উচিত। তবে আপনি যদি কোনও নির্দিষ্ট অক্ষরের পালাতে চান তবে এই ল্যাম্বদা ফাংশনটি ব্যবহার করুন:
>>> escape = lambda s, escapechar, specialchars: "".join(escapechar + c if c in specialchars or c == escapechar else c for c in s)
>>> s = raw_input()
I'm "stuck" :\
>>> print s
I'm "stuck" :\
>>> print escape(s, "\\", ['"'])
I'm \"stuck\" :\\
এটি এতটা কঠিন নয়:
def escapeSpecialCharacters ( text, characters ):
for character in characters:
text = text.replace( character, '\\' + character )
return text
>>> escapeSpecialCharacters( 'I\'m "stuck" :\\', '\'"' )
'I\\\'m \\"stuck\\" :\\'
>>> print( _ )
I\'m \"stuck\" :\
characters
এটিই প্রথমটি হওয়ার চেয়ে ভাল ছিল!
আপনি যদি কেবল কয়েকটি অক্ষর প্রতিস্থাপন করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:
import re
print re.sub(r'([\.\\\+\*\?\[\^\]\$\(\)\{\}\!\<\>\|\:\-])', r'\\\1', "example string.")