2014-05-12 7 views
7

के साथ मिश्रित मामले को मिश्रित मामले का नाम बदलने के लिए बैच कैसे करें मैंने अपनी पहली महत्वपूर्ण पायथन लिपि का एक उचित हिस्सा लिखा है। मैंने बस पीईपी 8 पढ़ना समाप्त कर दिया, और मैंने सीखा कि less_case_with_underscores को आवृत्ति चर के लिए प्राथमिकता दी जाती है। मैं मिश्रित नामों के लिए मिश्रित नामों का उपयोग कर रहा हूं, और मैं चाहता हूं कि मेरे कोड को low_case_with_underscores में बदलकर अधिक पायथनिक बनें, अगर हम यहां चारों ओर चीजें करते हैं।पायथन: अंडरस्कोर

मैं शायद कुछ स्क्रिप्ट लिख सकता हूं जो मिश्रित कैस की खोज करता है और इसे चतुराई से बदलने की कोशिश करता है, लेकिन इससे पहले कि मैं संभावित रूप से पहिया को फिर से शुरू कर दूं, मेरा सवाल यह है कि क्या इसका समाधान पहले से मौजूद है, या तो पाइथन-समझदार संपादक के भीतर या स्टैंडअलोन आवेदन; या क्या कोई अन्य दृष्टिकोण है जो सभी मिश्रित कैस चर नामों को low_case_with_underscores में परिवर्तित करने का कार्य पूरा करेगा। मैंने समाधान के लिए एक उचित बिट खोजा है लेकिन कुछ भी नहीं बदला है। कोई भी तकनीक जो विशेष रूप से इस परिणाम को उत्पन्न करेगी उसकी सराहना की जाएगी।

+1

आपको जो चाहिए वह रीफैक्टरिंग सुविधाओं के साथ एक आईडीई है (आपको अपने टैग बदलने की ज़रूरत है, या कम से कम कुछ को "ide" जैसा जोड़ना है)। ग्रहण यह करता है (चर पर कर्सर, शिफ्ट + alt + r), vim ऐसा कर सकता है (क्षमा करें यह perl के लिए है: http://stackoverflow.com/questions/597687/changing-variable-names-in-vim), जो क्या आप संपादक का उपयोग करते हैं? – Emilien

+0

मैं वर्तमान में ओएस एक्स के लिए बीबीईडिट का उपयोग कर रहा हूं, जो एक अच्छा संपादक है लेकिन उचित आईडीई नहीं है और इसमें सिंटैक्स रंग से परे कोई विशेष पायथन स्मारक नहीं है। टैग बदलने के लिए अच्छा सुझाव - क्या आपके पास कोई विशेष राय है कि इस विशेष कार्य के लिए ग्रहण या विम बेहतर होगा या नहीं? –

+0

मैं ग्रहण या विम या बीबीएडिट का दावा नहीं करता हूं या जो भी संपादक एक बेहतर संपादक है, लेकिन आप यहां प्रारंभ कर सकते हैं: https://wiki.python.org/moin/IntegratedDevelopmentEnvironments और रिफैक्टरिंग सुविधा (जैसे PyCharm) के साथ एक चुनें। – Emilien

उत्तर

10

मैं पूरा करने के लिए मैं क्या जीएनयू sed का उपयोग कर चाहता था कर रहा था: - लेकिन नहीं CapitalWords, इसलिए वर्ग के नाम ऐसे ही छोड़ दिया जाता है -

sed -i -e :loop -re 's/(^|[^A-Za-z_])([a-z0-9_]+)([A-Z])([A-Za-z0-9_]*)'\ 
'([^A-Za-z0-9_]|$)/\1\2_\l\3\4\5/' -e 't loop' myFile.py 

यह mixedCase के प्रत्येक उदाहरण पाता है और lower_case_with_underscores साथ यह बदल देता है; जैसे myVariable my_variable हो जाता है, लेकिन MyClass MyClass बनी हुई है।

(एक असंबंधित नोट पर, अब मैंने इसे किया है, मुझे लगता है कि मैं low_case_with_underscores पर मिश्रित कैस की उपस्थिति पसंद करता हूं। मेरे कोड पर इतने सारे अंडरस्कोर की उपस्थिति अजीब है। लेकिन मैं चीजें पाइथन करूंगा रास्ता और देखें कि क्या मैं इसका उपयोग करता हूं, खासकर यदि मैं अपने कोड को दूसरों के साथ देखा या काम करना चाहता हूं; या शायद मैं इसे पसंद करूंगा और अब मुझे इसे बदलने का एक आसान तरीका मिल गया है पीईपी 8 रास्ता अगर मैं कोड सार्वजनिक करना चाहता हूं।)

+2

जैसा कि मैंने और कोड लिखा है, मैंने पाया कि low_case_with_underscore मिश्रित कैस में अजगर से अधिक सुंदर है। (मेरे सी/सी ++ कोड में मैं मिश्रित मामलों में रहूंगा)। आपके समाधान के लिए धन्यवाद। – JoYSword

संबंधित मुद्दे