我从字符串中提取值但是删除某些字符时遇到问题。
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位部分以及版本,以便只有产品名称存在,它看起来不是所有行,如你所见,有些带有版本和位版本但有些只有一个或另一个。
答案 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'