اذهب إلى المحتوى

السؤال

نشر

أريد أن أقوم بإستبدال جميع علامات الإقتباس الفردية (') بواحدة زوجية (“) مع بعض الإستثناءات مثل "n't" و "'ll" و "'m".

فعل سبيل المثال، النص التالي:

input="the stackoverflow don\'t said, \'hey what\'"

 

يصبح كالتالي:

output="the stackoverflow don\'t said, \"hey what\"" 

 

Recommended Posts

  • 0
نشر (معدل)

يمكنك فعل ذلك بطريقتين الأولى عبر طريقة regex مثل المثال التالي:

input="I'm one of the persons' stackoverflow don't th'em said, 'hey what' I'll handle it."
print re.sub(r"(?<!s)'(?!(?:t|ll|e?m)\b)", '"', input)

حيث ستكون نتيجة الشيفرة السابقة كالتالي:

I'm one of the persons' stackoverflow don't th'em said, "hey what" I'll handle it.

ملاحظة: لا تنسى استدعاء مكتبة re عن طريق كتابة import re في بداية الملف.

والطريقة الثانية وهي الطريقة الأبسط، لأنها تتكون من أسطر أطول لكن أسهل للفهم فهي تستخدم شيفرات أساسية من لغة البايثون مثل append و for.

شيفرة الطريقة الثانية:

text="the stackoverflow don't said, 'hey what'"

out = []
for i, j in enumerate(text):
    if j == '\'':
        if text[i-1:i+2] == "n't" or text[i:i+3] == "'ll" or text[i:i+3] == "'m":
            out.append(j)
        else:
            out.append('"')
    else:
        out.append(j)

print ''.join(out)

وستكون النتيجة كالتالي:

the stackoverflow don't said, "hey what"

وبالطبع يمكنك إضافة الاستثناءات كما تريد عن طريق إضافتها إلى الجملة الشرطية.

 

المصدر

تم التعديل في بواسطة هشام رزق الله

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...