मैं irclib का उपयोग कर पायथन में एक आईआरसी बॉट लिख रहा हूं और मैं कुछ चैनलों पर संदेशों को लॉग करने की कोशिश कर रहा हूं।
मुद्दा यह है कि कुछ एमआईआरसी उपयोगकर्ता और कुछ बॉट color codes का उपयोग करके लिखते हैं।
कोई विचार है कि मैं उन हिस्सों को कैसे रोक सकता हूं और केवल स्पष्ट एसीआईआई पाठ संदेश छोड़ सकता हूं?एमआईआरसी उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले रंग कोड कैसे पट्टी करें?
उत्तर
नियमित अभिव्यक्ति मेरी राय में आपकी सबसे साफ शर्त है। यदि आपने पहले उनका उपयोग नहीं किया है, this एक अच्छा संसाधन है। पायथन की रेगेक्स लाइब्रेरी पर पूरी जानकारी के लिए, here पर जाएं।
import re
regex = re.compile("\x03(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE)
^सी (जो ASCII में \ X03 है, तो आप (3) कमांड लाइन पर chr करके पुष्टि कर सकते हैं), और फिर वैकल्पिक रूप से एक या दो [0-9] पात्रों के लिए लग रहा है के लिए रेगुलर एक्सप्रेशन से खोजें , फिर वैकल्पिक रूप से एक अल्पविराम के बाद और फिर एक या दो [0-9] वर्णों का पालन किया जाता है।
(? ...) भंडारण क्या कोष्टक में पाया गया था (जैसा कि हम इसे backreference की जरूरत नहीं है), के बारे में भूल करने के लिए कहते हैं? का अर्थ है 0 या 1 और {n, m} का मिलान पिछले समूह के एन से मिलान करने का है। अंत में, \ d का अर्थ है [0-9]।
शेष को ऊपर दिए गए लिंक का उपयोग करके डीकोड किया जा सकता है।
>>> regex.sub("", "blabla \x035,12to be colored text and background\x03 blabla")
'blabla to be colored text and background blabla'
अराजकता 'समाधान समान है, लेकिन दो नंबर की एक अधिकतम की तुलना में अधिक खा खत्म हो सकता है और किसी भी ढीली^सी अक्षर हैं जो के बारे में फांसी हो सकती है को नहीं निकाला जाएगा (जैसे कि एक है कि बंद कर देता है के रूप में रंग आदेश)
बिल्कुल सही, धन्यवाद। अच्छा जवाब और महान स्पष्टीकरण। मैंने \ x1f | \ x02 | जोड़ा है ताकि वह बोल्ड और अंडरलाइन फ़िल्टर भी कर सके। re.compile ("\ x1f | \ x02 | \ x03 (?: \ d {1,2} (?:, \ d {1,2})?)?", re.UNICODE) – daniels
p = re.compile("\x03\d+(?:,\d+)?")
p.sub('', text)
मैं भी जो कुछ भी उपयोग यह
regex = re.compile("\x0f|\x1f|\x02|\x03(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE)
regex.sub('', msg)
है के रूप में मैं इस सवाल उपयोगी पाया '\x0f
' जोड़ने के लिए, मैं समझ मैं योगदान होता था।
मैं regex
regex = re.compile("\x1f|\x02|\x03|\x16|\x0f(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE)
\x16
"रिवर्स" चरित्र को हटा दिया, कुछ चीज़ें गयी। \x0f
एक और बोल्ड चरित्र से छुटकारा पाता है।
दूसरा रेटेड और निम्नलिखित सुझाव दोषपूर्ण हैं, क्योंकि वे जो भी चरित्र के बाद अंकों की तलाश करते हैं, लेकिन रंग कोड चरित्र के बाद नहीं।
मैं सुधार हुआ है और संयुक्त है सभी पोस्ट, निम्नलिखित परिणामों के साथ:
- हम बिना पाठ में छोड़ने अंक रिवर्स चरित्र
- निकालने रंग कोड को दूर करना ।
समाधान:
regex = re.compile("\x1f|\x02|\x12|\x0f|\x16|\x03(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE)
AutoDl-irssi एक बहुत अच्छा पर्ल में लिखा एक था, यहाँ यह अजगर में है:
def stripMircColorCodes(line) : line = re.sub("\x03\d\d?,\d\d?","",line) line = re.sub("\x03\d\d?","",line) line = re.sub("[\x01-\x1F]","",line) return line
मैं जानता हूँ कि मैं एक चाहने तैनात रेगेक्स समाधान क्योंकि यह क्लीनर हो सकता है, मैंने एक गैर रेगेक्स समाधान बनाया है जो सही काम करता है।
def colourstrip(data):
find = data.find('\x03')
while find > -1:
done = False
data = data[0:find] + data[find+1:]
if len(data) <= find+1:
done = True
try:
assert int(data[find])
data = data[0:find] + data[find+1:]
except:
done = True
try:
assert not done
assert int(data[find])
data = data[0:find] + data[find+1:]
except:
if not done and (data[find] != ','):
done = True
if (len(data) > find+1) and (data[find] == ','):
try:
assert not done
assert int(data[find+1])
data = data[0:find] + data[find+1:]
data = data[0:find] + data[find+1:]
except:
done = True
try:
assert not done
assert int(data[find])
data = data[0:find] + data[find+1:]
except: pass
find = data.find('\x03')
data = data.replace('\x1d','')
data = data.replace('\x1f','')
data = data.replace('\x16','')
data = data.replace('\x0f','')
return data
datastring = '\x0312,4This is coolour \x032,4This is too\x03'
print(colourstrip(datastring))
सभी हर किसी को मदद के लिए धन्यवाद।
- 1. एक सी # शाब्दिक में एमआईआरसी रंग कोड एम्बेड करें?
- 2. HttpPostedFileBase द्वारा उपयोग किए जाने वाले संसाधनों को कैसे रिलीज़ करें?
- 3. एक आधुनिक ओएस द्वारा उपयोग किए जाने वाले BIOS का उपयोग कैसे किया जाता है?
- 4. मैं पर्ल स्क्रिप्ट द्वारा उपयोग किए जाने वाले सभी मॉड्यूल कैसे ढूंढूं?
- 5. पाइथन मल्टीप्रोसेसिंग पूल द्वारा किए जाने वाले "काम" की मात्रा कैसे प्राप्त करें?
- 6. आपके द्वारा उपयोग किए जाने वाले सर्वोत्तम लॉग विश्लेषण टूल का क्या उपयोग है?
- 7. मैं MySQL द्वारा उपयोग किए जाने वाले डिफ़ॉल्ट स्टोरेज इंजन को कैसे सेट कर सकता हूं?
- 8. उपयोगकर्ता द्वारा आवेदन पर खर्च किए जाने वाले कुल समय की गणना कैसे करें?
- 9. django-cms: apphooks द्वारा उपयोग किए जाने वाले यूआरएल रिवर्स() या {% url%}
- 10. एक्सएसएलटी में उपयोग किए जाने वाले @ (एट) प्रतीक क्या है?
- 11. क्या माइक्रोसॉफ्ट कभी भी LINQ द्वारा उपयोग किए जाने वाले सभी संग्रहों को बना देगा?
- 12. अन्य पैकेजों द्वारा उपयोग किए जाने वाले सामान्य xsd जेनरेट क्लास को बनाएं
- 13. वेबपृष्ठ में शब्दों को खोजने के लिए ब्राउज़र द्वारा उपयोग किए जाने वाले एल्गोरिदम
- 14. फ्लास्क में url_for() द्वारा उपयोग किए जाने वाले डोमेन को मैं कहां परिभाषित करूं?
- 15. व्यक्तिगत डेटा द्वारा उपयोग किए जाने वाले फॉर्म फ़ील्ड नाम ब्राउज़रों (सफारी, ओपेरा)
- 16. मैं सब्लिमे टेक्स्ट 2 द्वारा उपयोग किए जाने वाले वर्तमान फ़ॉन्ट परिवार को कैसे निर्धारित कर सकता हूं?
- 17. सिनात्रा ऐप में उपयोग किए जाने वाले सभी मार्गों की सूची कैसे प्राप्त करें?
- 18. वास्तविक दुनिया में आपके द्वारा काम किए जाने वाले कुछ सामान्य प्रोग्रामिंग कार्य क्या हैं?
- 19. हाइबरनेट द्वारा पूछे जाने वाले प्रश्नों को कैसे देखें?
- 20. मैं तत्काल या quickwatch में उपयोग किए जाने वाले नामस्थान का संदर्भ कैसे दूं?
- 21. दोहराए जाने वाले जावास्क्रिप्ट कोड को साफ़ करें
- 22. android.Log.d कैसे पट्टी करें?
- 23. मैन्युअल रूप से रंग पट्टी में रेंज कैसे सेट करें?
- 24. पायथन में, मैं फ़ंक्शन में उपयोग किए जाने वाले वैश्विक चर कैसे प्राप्त कर सकता हूं?
- 25. WHERE क्लॉज में उपयोग किए जाने पर MySQL द्वारा कैश किए गए सबक्वायरीज़ हैं?
- 26. surefire-plugin द्वारा लोड किए जाने वाले क्लासपाथ पर स्थानों का क्रम बदलना
- 27. अनगिनत टैब खोलने वाले उपयोगकर्ताओं द्वारा सर्वर बाढ़ को कैसे प्राप्त करें?
- 28. क्या अक्सर उपयोग किए जाने वाले जावा एपीआई कार्यों पर कुछ आंकड़े हैं?
- 29. आईआईएस में होस्ट किए जाने पर कोड से डब्ल्यूसीएफ सेवा को कैसे कॉन्फ़िगर करें?
- 30. कोड को तोड़ने वाले अदृश्य वर्णों को विश्वसनीय रूप से कैसे पट्टी करें?
चैनल + एस: पी – Eevee