2013-07-11 14 views
0

我仍在学习Python,因此对我一无所知!从列表中提取可更改的字符串并在Python中插入

我有一个看起来像这样的列表:

['2 19 2839475239874 hda'] 

我需要提取从最终的HDA。但是,hda可能并不总是最后一块,hda可能并不总是只有3个字母(可能是4或5,并且可能包含数字)。但它总是以字母'h'开头。

在成功提取hda之后,我需要将该块插入到dd命令中。这看起来是这样的:

dd if=/dev/zero of=/dev/hda bs=512 count=1 

但如果HDA可能是不同的每个I运行dd命令的时候,我需要一种方法来有dd命令多变的“HDA”的一部分。

对不起,如果这是混乱,我是一个初学者,并迷惑自己!我尝试过使用startswith进行提取,但是甚至无法通过那里!

+0

'['2 19 2839475239874 hda']'只有一个元素的列表?为什么不使用一个字符串,或者列表中有更多的字符串? – zhangyangyu

+0

@ zhangyangyu不,这是唯一的列表,hda是我需要的唯一字符串/块。对不起,如果我没有正确理解你的问题。 – ohhiloveyouu

+0

@张扬余,我想他只是误拼了。阅读'['2','19','2839475239874','hda']';]。 –

回答

1

只需像这样:

lst = ['2 19 2839475239874 hda'] 

# Extracting the device part 
dev = filter(lambda s: s[0] is 'h', lst[0].split())[0] 

# Inserting it 
cmd = 'dd if=/dev/zero of=/dev/{0} bs=512 count=1'.format(dev) 

你将要检查,你不必在你的列表中的任何H-字虽然如此。

+0

我创建的程序应该打印出这一点: [ '2 19 2839475239874 HDA'] 作为 ['2 – ohhiloveyouu

+0

@ohhiloveyouu更新了答案。 –

1
>>> thelist = ['2 19 2839475239874 hda'] 
>>> [item for item in thelist[0].split() if item[0] == 'h'][0] 
'hda' 
相关问题