কাঁচা পাইথন স্ট্রিংয়ে একটি উদ্ধৃতি কীভাবে অন্তর্ভুক্ত করবেন


91

বিবেচনা:

>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what\"ever"
'what\\"ever'

সুতরাং আমরা কিভাবে উদ্ধৃতি পেতে পারি, কিন্তু স্ল্যাশ না?

এবং দয়া করে প্রস্তাব করবেন না r'what"ever', কারণ প্রশ্নটি তখনই হয়ে যায় যে আমরা উভয় প্রকারের উদ্ধৃতিগুলি কীভাবে অন্তর্ভুক্ত করব?

সম্পর্কিত


কাঁচা স্ট্রিংগুলির জন্য প্রেরণাদায়ক ব্যবহারের ক্ষেত্রে (রেজিেক্সস এবং অন্যান্য ক্ষেত্রে যেখানে পাইথন ব্যতীত অন্য কিছু ব্যাকস্ল্যাশগুলির ব্যাখ্যা করে), ব্যাকস্ল্যাশ ভাল আছে, কারণ এটি রেজেক্স ইঞ্জিন / যে কোনও ইঞ্জিন দ্বারা প্রক্রিয়া করা হবে। আপনি কাঁচা স্ট্রিং ব্যবহার করতে চাইতে পারেন এমন সমস্ত ক্ষেত্রে এটি প্রযোজ্য না, তবে আপনি ব্যাকস্ল্যাশগুলি বের করার চেষ্টা করার আগে এটি আপনার ব্যবহারের ক্ষেত্রে প্রযোজ্য কিনা তা সম্পর্কে নিশ্চিত হওয়া নিশ্চিত করুন।
ব্যবহারকারী 2357112 20

উত্তর:


148

আপনি যদি স্ট্রিংগুলিতে ডাবল উদ্ধৃতি ব্যবহার করতে চান তবে একক উদ্ধৃতি না চান, আপনি পরিবর্তে ডিলিমিটার হিসাবে একক উদ্ধৃতি ব্যবহার করতে পারেন:

r'what"ever'

আপনার স্ট্রিংয়ে যদি উভয় প্রকারের উদ্ধৃতি দরকার হয় তবে একটি ট্রিপল-কোটেড স্ট্রিং ব্যবহার করুন:

r"""what"ev'er"""

আপনি যদি আপনার স্ট্রিংয়ে উভয় প্রকারের ট্রিপল-কোটেড স্ট্রিংগুলি অন্তর্ভুক্ত করতে চান (একটি অত্যন্ত সম্ভাবনাময় কেস), আপনি এটি করতে পারবেন না এবং আপনাকে পলায়নকারীদের সাথে অ কাঁচা স্ট্রিং ব্যবহার করতে হবে।


4
দুর্দান্ত। আমি ট্রিপল-উদ্ধৃত স্ট্রিংগুলিও কাঁচা তৈরি করতে পারলাম বুঝতে এক সেকেন্ড সময় নিয়েছে।
এমপিএন

4
আমি শেষ অনুচ্ছেদটিও পছন্দ করি ... আমি ঠিক এটিই বের করার চেষ্টা করছিলাম। বিভিন্ন উদ্ধৃতি শৈলীর সীমাবদ্ধতা। আমি পাইথন r"raw string"এবং সি # এর @"@-quoted string"এবং"""triple quotes"""
এমপেন

4
পাইথন নতুন এখানে, কিছুটা বিভ্রান্ত, r'what"ever"একটি পার্স ত্রুটি নয়? মানে r'what"ever'?
এনএমআর

4
পাইথন বিকাশকারীদের কী হয়েছে? তারা অন্যান্য ভাষার মতোই কেন সহজেই একটি পালানোর ব্যবস্থা বাস্তবায়ন করেনি?
জাম্বি

6
@ জ্যাম্বি তাদের একটি পালানোর ব্যবস্থা আছে, আপনি কেবল এটি অ-কাঁচা স্ট্রিং (তাদের সামনে আর ছাড়াই স্ট্রিং) ব্যবহার করুন, এবং এটি অন্যান্য ভাষার মতো সুন্দরভাবে কাজ করে
কোবার্ন

10

পাইথনের স্ট্রিং করার একাধিক উপায় রয়েছে। নিম্নলিখিত স্ট্রিং সিনট্যাক্স আপনাকে ডাবল কোট ব্যবহার করার অনুমতি দেবে:

'''what"ever'''

4
আপনি প্রশ্নের কাঁচা অংশ মিস করেছেন ।
এমপেন

10

আপনার যদি কোনও ধরণের উদ্ধৃতি (একক, দ্বিগুণ এবং উভয়ের জন্য ট্রিপল) প্রয়োজন হয় তবে আপনি স্ট্রিংগুলিকে "একত্রিত" করতে পারেন:

>>> raw_string_with_quotes = r'double"' r"single'" r'''double triple""" ''' r"""single triple''' """
>>> print raw_string_with_quotes
double"single'double triple""" single triple'''

আপনি অ-কাঁচা স্ট্রিংগুলির সাথে কাঁচা স্ট্রিংগুলিও "সংযুক্ত" করতে পারেন:

>>> r'raw_string\n' 'non-raw string\n'
'raw_string\\nnon-raw string\n'

(0): বাস্তবে পাইথন পার্সার স্ট্রিংগুলিতে যোগদান করে এবং এটি একাধিক স্ট্রিং তৈরি করে না। যদি আপনি "+" অপারেটর যোগ করেন তবে একাধিক স্ট্রিং তৈরি এবং সংযুক্ত করা হবে।


5

কিছু মনে রাখবেন না, উত্তরটি কাঁচা ট্রিপল-কোটেড স্ট্রিং:

r"""what"ever"""

3

যেহেতু আমি এই উত্তরটিতে হোঁচট খেয়েছি, এবং এটি আমাকে ব্যাপকভাবে সহায়তা করেছে, তবে আমি একটি ছোটখাটো সিন্ট্যাকটিক সমস্যা পেয়েছি, তাই আমি অনুভব করেছি যে আমার অন্যদের সম্ভাব্য হতাশা বাঁচানো উচিত। ট্রিপল কোট করা স্ট্রিং বর্ণিত হিসাবে এই দৃশ্যের জন্য কাজ করে, তবে মনে রাখবেন যে "যদি আপনি স্ট্রিংটিতে চান স্ট্রিংয়ের শেষে ঘটে তবে:

somestr = """This is a string with a special need to have a " in it at the end""""

আপনি মৃত্যুদন্ডের সময় একটি ত্রুটি মারবেন কারণ "" "" (4) উদ্ধৃতিগুলি একটি সারিতে স্ট্রিং রিডারকে বিভ্রান্ত করে, কারণ এটি মনে করে যে এটি ইতিমধ্যে স্ট্রিংয়ের শেষ প্রান্তে এসে পৌঁছেছে এবং তারপরে একটি এলোমেলো খুঁজে পেয়েছে "আপনি এটি যাচাই করতে পারেন এই জাতীয় 4 টি উদ্ধৃতিতে একটি স্থান প্রবেশ করে: "" "এটিতে ত্রুটি থাকবে না।

এই বিশেষ ক্ষেত্রে আপনার ব্যবহার করতে হবে:

somestr = 'This.....at the end"'

অথবা মিশ্রিত "এবং 'এর সাথে একাধিক স্ট্রিং তৈরি করার এবং তারপরে এটিকে সত্যতার পরে যুক্ত করে তোলার উপরে বর্ণিত পদ্ধতিটি ব্যবহার করুন।


1

কেবল নতুন পাইথন চ স্ট্রিংয়ের সামঞ্জস্যপূর্ণ কার্যকারিতা অন্তর্ভুক্ত করতে:

var_a = 10

f"""This is my quoted variable: "{var_a}". """

এফ-স্ট্রিংগুলি পালানোর পক্ষে সমর্থন করে, তাই না? সুতরাং আপনি করতে পারেন f"foo\"bar"
এমপেন

-3

ব্যবহার:

dqote='"'
sqote="'"

আপনার প্রয়োজন অনুযায়ী '+' অপারেটর dqoteএবং squoteভেরিয়েবলগুলি ব্যবহার করুন ।

আমি চাইলে sed -e s/",u'"/",'"/g -e s/^"u'"/"'"/, আপনি নিম্নলিখিত চেষ্টা করতে পারেন:

dqote='"'
sqote="'"
cmd1="sed -e s/" + dqote + ",u'" + dqote + "/" + dqote + ",'" + dqote + '/g -e s/^"u' + sqote + dqote + '/' + dqote + sqote + dqote + '/'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.