irclibを使ってPythonでIRCボットを作成していますが、特定のチャネルでメッセージを記録しようとしています。
一部のmIRCユーザーと一部のボットがcolor codesを使用して書き込みます。
どのように私はそれらの部分を取り除くことができ、明確なasciiテキストメッセージだけを残すことができますか?mIRCユーザーが使用する色コードを削除する方法は?
答えて
私の意見では最も正規の表現方法です。あなたが以前にそれらを使用していない場合、thisは良いリソースです。 Pythonのregexライブラリの詳細については、hereを参照してください。
import re
regex = re.compile("\x03(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE)
C(ASCIIで\ X03です、あなたは(3)コマンドラインでCHRを行うことによって確認することができます)、その後、必要に応じて1つまたは2 [0-9]の文字を探します^のための正規表現検索
任意にコンマが続き、さらに1つまたは2つの[0-9]文字が続きます。(?:...)は括弧内に見つかったものを忘れてしまいます(逆参照する必要はありません)。?は0または1に一致することを意味し、{n、m}は、以前のグループの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'
混乱はのソリューションも同様ですが、2つの数の最大値以上のものを食べ終わる可能性があり、また、約ハングすることができる任意の緩い^ Cの文字を削除しないであろう(例えば閉じ一つとしてカラーコマンド)
完璧、ありがとう。ニースの答えと大きな説明。 \ 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 = re.compile("\x1f|\x02|\x03|\x16|\x0f(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE)
\x16
にカップルの事を追加しましたが、 "逆" の文字を削除しました。 \x0f
は太字の文字を取り除きます。
2番目の評価とそれに続く提案は、文字の後に数字を探すが、カラーコード文字の後ろにはないので、欠陥があります。
私は次のような結果で、すべての記事を改善し、組み合わせています:
- 我々は、テキスト内の数字を残してずにに逆の文字を削除し
- 削除カラーコードを実行します。
ソリューション:のAutoDL-のirssiはPerlで書かれた非常に良いものを持っていた
regex = re.compile("\x1f|\x02|\x12|\x0f|\x16|\x03(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE)
、ここではPythonである:
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
私は私が望んで掲示知っていますregexソリューションはクリーナーかもしれないので、私は完璧に動作する正規表現以外のソリューションを作成しました。
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. Mirc色コードのRegex置換
- 2. 削除ボタンを使用してユーザー投稿を削除する
- 3. ユーザーが削除した集計を再表示する方法
- 4. Javaを使用してActive Directoryでユーザーを削除する方法
- 5. Javaコードを使用してログファイルの内容を削除する方法
- 6. アプリケーションからQuickBloxユーザー・タグを削除する方法は?
- 7. 削除キーを使用してDataGridから行を削除する方法
- 8. BSTで削除コードを実装する方法は?
- 9. vim:カーソルとコードの間のスペースを削除する方法は?
- 10. fortranコードからファイルを削除する方法は?
- 11. ユーザーが削除されたときにゲームを削除する
- 12. 削除影が、私はいつもScatterViewItemから影を削除するには、このコードを使用し
- 13. ユーザーがiOSアプリケーションを削除した後にローカルデータを保存する方法は?
- 14. ディレクトリサービスを使用してユーザーをプログラムで削除する
- 15. buddypressで未確認のユーザーを削除する方法
- 16. Jqueryを使用して親ULを削除する方法
- 17. jQueryを使用してz-indexプロパティを削除する方法
- 18. gitレビューを使用してブランチを削除する方法
- 19. ボタンを使用してインデックスを削除する方法SWIFT
- 20. LuceneNetでindexWriterを使用してドキュメントを削除する方法
- 21. Raven.Client.Lightweightを使用してRavenDBデータベースを削除する方法
- 22. msiexec.exeを使用してWindowsインストーラを削除する方法
- 23. Microsoft.Azure.ActiveDirectory.GraphClientを使用してAzureADでユーザーマネージャを削除する方法
- 24. SSISを使用してキューブパーティションを作成/削除する方法
- 25. jqueryを使用して子要素を削除する方法
- 26. JSONBuilderを使用してカットアンドペーストのクロージャを削除する方法
- 27. display:noneを使用して要素を削除する方法?
- 28. Javaを使用してページキャッシュを削除する方法
- 29. WSを使用してEJBCAエンドエンティティを削除する方法
- 30. C#.Netを使用してDataTable列を削除する方法?
チャンネル+ Sを設定:P – Eevee