如何清理来自索引的字符串

时间:2012-07-17 17:33:20

标签: python string

我从字符串中提取值但是删除某些字符时遇到问题。

Mandrake 9.2 (32 bit)

我从中拉出的索引返回,但我想删除(32位),其长度和位置因文件中的行而异。我使用[0:-8],但问题是字符串的变化,所以我在我的代码中尝试了这个

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

但没有成功。

更多行:

Redhat 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位部分以及版本,以便只有产品名称存在,它看起来不是所有行,如你所见,有些带有版本和位版本但有些只有一个或另一个。

2 个答案:

答案 0 :(得分:1)

这是你想要的吗?

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

请注意,这仅适用于您在一条线上保证1套匹配括号...

稍微有点变化,我们可以使它适用于您上面的所有内容:

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

这将匹配版本字符串number.number.number...它还将匹配括号内的任何内容(包括)。每个匹配都将从该行中删除。

答案 1 :(得分: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'