2014-04-23 105 views
0

我使用的Python 2.7.3字符串查找字符並將其分配給變量

我試圖指定字符串drive基於多行字符串的一封信。驅動器號可能總是不同,並且索引在字母的位置上也可能總是不同。

在下面的字符串中,我們可以看到該字母是K

串= Volume 2 RAW Partition 8 MB Healthy\n K:\XYZ\

在這個字符串,我們可以看到這封信是H

字符串2 = Volume 2 NEW VOLUME FAT Partition 8 MB Healthy\n H:\XYZ\

到目前爲止,我可以使用以下方法來看到字符串是什麼,但我不知道如何使用替代找到這封信。 (提示:這將是一些與#four spaces here + .* + \\XYZ)...

if re.search(r'.*Volume.*\n.*XYZ.*', mainLine): 
    drive = mainLine.replace(r'.*Volume.*\n .*:\\XYZ.*',) 
    print drive 

回答

1

你可以做到這一點使用下面的正則表達式:

s = re.search(r'(\w):\\\w+', string).group(1) 
s2 = re.search(r'(\w):\\\w+', string2).group(1) 

>>> print s 
K 

>>> print s2 
H 

你的字符串必須如下:

string = 'Volume 2      RAW Partition  8 MB Healthy\n K:\XYZ\\' 
string2 = 'Volume 2   NEW VOLUME FAT Partition  8 MB Healthy\n H:\XYZ\\' 

DEMO

+0

哇,它就像一個魅力。我不知道如何或完全理解該行的部分內容,例如'(\ w)'+'\ w +'+ group(1)'。但它的作品! –

2

假設第ERE將永遠只有一個「:」每次源字符串,立即盤符下面:

drive = source[source.index(':') - 1] 
+0

我還沒有測試過,但我可以說這也是事實。 –

相關問題