2014-04-01 72 views
0

這聽起來像是要解決的常見問題,但我從來沒有找到合適的解決方案。 我有一個txt文件用的樣子:更改txt文件中特定字符串後面的值

variable_name1 = '1' 
variable_name2 = '0' 

因此我想寫一個Python腳本,這會在其中找到contrains variable_name1(函數的輸入)txt文件一行,會設置變量等於x(這也是一個輸入)。 到目前爲止,我曾嘗試:

line = "Cats = '2'" 
matchObj = re.match(r'Cats = (.*)', line) 
print("matchObj.group(1) : ", matchObj.group(1)) 
k=(matchObj.group(1)) 
print(k) 

但是我想爲輸入。我希望它從包含多於一行的txt文件中找到它。

+0

@Bach - 不要刪除Python字的標題... –

+1

@ user1153551請參閱[this](http://meta.stackexchange.com/q/19190/204922)。 – Jerry

+0

@ user1153551我認爲你應該閱讀我給你的上面的鏈接,我不會在這裏回覆,因爲這樣做對於這個問題確實不具有建設性。那裏提到了所有不在標題中加標籤的參數。 – Jerry

回答

1

你可以做到這一點使用列表格式:

簡單的例子:

>>> word = 'This' 
>>> print('{} is string formatting'.format(word)) 
This is string formatting 

您的代碼具體爲:

line = "Cats = '2'" 
word = str(input('Enter keyword: ')) 

matched = re.match('{} = (.*)'.format(word), line).group(0) 
print(matched) 

>>> python script.py 
Enter keyword: Cats 
Cats = '2' 

>>> word = 'Dogs' 
>>> print(re.match('{} = (.*)'.format(word), "Dogs = '3'").group(0)) 
Dogs = '3' 
1

你可以指定你的變量名的變量,然後包括那你的正則表達式就像這個例子:

line = "Cats = '2'" 
variable_name = "Cats" 

import re 
f = re.findall(word+" = '(.*)'", line) 
print f 

輸出:

['2'] 

希望這會有所幫助。