-1

文字列から値を取得していますが、特定の文字を削除する際に問題が発生しています。

Mandrake 9.2 (32 bit)

プルしたインデックスはそれを返しますが、(32ビット)を削除したいのですが、その長さと場所はファイル内の行ごとに異なります。[0:-8] を使用しましたが、問題は文字列の分散であったため、コードでこれを試しました

lines = re.sub(' [\d.]*', ' ', plines2)

しかし成功しませんでした。

より多くの行:

レッドハット 7.3 (32 ビット)

Redhat 8.0 (32bit)
Mac OS X 10.4
Home Premium (32bit)
Linux Ubuntu Desktop 9.10
Linux Ubuntu Desktop 9.10

それらはさまざまです。32ビット部分とバージョンを削除して、製品名だけが表示されるようにしたいのですが、ご覧のようにすべての行に表示されるわけではありません。バージョンとビットバージョンが付属しているものもあれば、1つしかないものもありますまたは他の。

4

2 に答える 2

1

これは、あなたの望むことですか?

import re
ss = 'Mandrake 9.2 (32 bit)'
new_line = re.sub(r'\(.*?\)','',ss)  #'Mandrake 9.2 '

これは、1行に一致する括弧が1セット保証されている場合にのみ機能することに注意してください...

わずかなバリエーションで、上記のすべてのもので動作させることができます。

new_line = re.sub(r'(?:\d+(?:\.\d+)*\s*)?(?:\(.*?\))?','',ss)

これはバージョン文字列と一致number.number.number...します。括弧内のすべてのものとも一致します(両端を含む)。各一致は行から削除されます。

于 2012-07-17T17:38:49.847 に答える
0
>>> import re
>>> line = "Mandrake 9.2 (32 bit)"
>>> re.sub('\(\d.*\)','',line)
'Mandrake 9.2 '

末尾と先頭のスペースを削除する場合

newstring.strip()

例えば

>>> 'Mandrake 9.2 '.strip()
'Mandrake 9.2'
于 2012-07-17T17:39:01.610 に答える