値が以下のような変数テキストがあります。末尾の数字のストリップが必要です。それを行うためのPython組み込み関数はありますか..そうでない場合は、Pythonでこれを行う方法を提案してください
例-text=A8980BQDFZDD1701209.3
=>-A8980BQDFZDD
値が以下のような変数テキストがあります。末尾の数字のストリップが必要です。それを行うためのPython組み込み関数はありますか..そうでない場合は、Pythonでこれを行う方法を提案してください
例-text=A8980BQDFZDD1701209.3
=>-A8980BQDFZDD
In [36]: myStr = '-text=A8980BQDFZDD1701209.3'
In [37]: print '-'+myStr.rpartition('=')[-1].rstrip('1234567890.')
-A8980BQDFZDD
print 'text=A8980BQDFZDD1701209.3'.rstrip('1234567890.')[5:]
必要なすべてを行います。ただし、最後のスライスはハックのようなものです。
最初のステップは、文字列がエンコードしている情報と、それを読み取るときにどのようにデコードするかを理解することです。これにより、データ内のパターンが何であるかがわかり、それらによって文字列を操作して Python で情報を抽出する方法が決まります。
最後のいくつかの数字を失う必要がある場合は、rstrip
簡単に失うことができます。これは、質問で暗示しているように、「-text =」を「-」に変更することを前提としています。
input = '-text=A8980BQDFZDD1701209.3'
text = input.split('=')[1]
output = '-' + text.rstrip('1234567890.')
これは、数字の接尾辞にアルファベット文字が含まれないこと、および保持したい半分が に渡す文字で終わることがないことも前提としているため、潜在的に危険なアプローチですrstrip
。これらのいずれかが常にデータに当てはまるとは限らない場合、このソリューションでは悪い結果が得られ、より正確なパターンを見つける必要があります。
たとえば、'keep' 部分が常に12 文字の長さである場合、この例の 3 行目を次のように置き換えて、文字列スライスを取得する必要があります。
output = '-' + text[:12]
しかし、最終的には、これらの文字列が何であるか、および最初に異なる半分がどのように形成されるかを定義する規則によって異なります。
print '123abc382'.rstrip('1234567890')
使用できますrstrip
。pythonのドキュメントを確認してください。