পুনঃসুব রিপ্লেসমেন্ট প্যাটার্নে গ্রুপগুলি ক্যাপচারে ব্যাকফেরেন্সগুলি পরিচালনা করা


88

আমি স্ট্রিংটি 0.71331, 52.25378নিয়ে ফিরে যেতে চাই 0.71331,52.25378- যেমন কেবল একটি অঙ্ক, কমা, একটি স্থান এবং একটি সংখ্যা অনুসন্ধান করুন এবং স্থানটি সরিয়ে ফেলুন।

এটি আমার বর্তমান কোড:

coords = '0.71331, 52.25378'
coord_re = re.sub("(\d), (\d)", "\1,\2", coords)
print coord_re

কিন্তু এই আমাকে দেয় 0.7133,2.25378। আমি কি ভুল করছি?


4
যেহেতু আপনি না আসলে সংখ্যা ক্যাপচার করতে চান, এটি ব্যবহার বর্ণন-এরাউন্ড আরো ইন্দ্রিয়, অর্থাত করতে পারেন: re.sub(r'(?<=\d), (?=\d)', ',', coords)
ig0774

4
এই নির্দিষ্ট প্রশ্নের জন্য রেজেক্সের দরকার নেই, প্রতিস্থাপনটি ব্যবহার করুন: coords.replace(' ', '')
গ্রিংগো সুভে

উত্তর:


121

আপনার রেগেক্সের জন্য কাঁচা স্ট্রিং ব্যবহার করা উচিত, নিম্নলিখিত চেষ্টা করুন:

coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)

আপনার বর্তমান কোড সহ, আপনার প্রতিস্থাপনের স্ট্রিংয়ের ব্যাকস্ল্যাশগুলি অঙ্কগুলি ছাড়ছে, সুতরাং আপনি সমস্ত মিলগুলি এর সমতুল্য প্রতিস্থাপন করছেন chr(1) + "," + chr(2):

>>> '\1,\2'
'\x01,\x02'
>>> print '\1,\2'
,
>>> print r'\1,\2'   # this is what you actually want
\1,\2

আপনি যখনই স্ট্রিংটিতে ব্যাকস্ল্যাশ ছেড়ে যেতে চান, rউপসর্গটি ব্যবহার করুন বা প্রতিটি ব্যাকস্ল্যাশ ( \\1,\\2) এড়িয়ে যান ।


4
ধন্যবাদ, কৌতুক করেনি যে। docs.python.org/library/re.html#raw-string- এটি পড়ার জন্য নোটেশন
রিচার্ড

4
কাঁচা স্ট্রিংগুলি কী কী তার আরও ভাল ব্যাখ্যা করার জন্য এছাড়াও স্ট্যাকওভারফ্লো.com/ প্রশ্নগুলি / ২০২8১40০০/২
রিচার্ড

উপরের উদাহরণে আপনি কীভাবে গ্রুপের নামটি মুদ্রণ করবেন? বলুন, যদি গ্রুপ হিসাবে xCoord\1 বলা হয় , তাহলে কি re.subসাব স্ট্রিংগুলি গ্রুপের নামের সাথে প্রতিস্থাপন করার নির্দেশ দেওয়া সম্ভব হবে যার re.sub(r"(\d), (\d)", r"\1,\2", coords)ফলে স্ট্রিংটি আক্ষরিক হয়ে xCoord,52.25378
উঠল

পাইথন 3 এ এটি কাজ করে না। ব্যবহার করে \1এটি কিছু উদ্ভট ইউনিকোড চরিত্রের সাথে প্রতিস্থাপন করে।
সেরিন

16

পাইথন \1ASCII মান 1 সহ একটি চরিত্র হিসাবে ব্যাখ্যা করে এবং এটিতে পাস করে sub

কাঁচা স্ট্রিং ব্যবহার করুন, যেখানে পাইথন এটির ব্যাখ্যা করে না \

coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)

reডকুমেন্টেশনের শুরুতে এটি কভার করা হয়েছে , আপনার আরও তথ্যের প্রয়োজন হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.