2014-04-01 40 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'] 

希望这会有所帮助。