Python字符串提取文本文件

问题描述:

我写了一个python脚本,将拨打电话到服务器并获取响应。同时,为服务器的呼叫时,它会在请求的主体通过几个值。这个值应该是通过读取文本文件来获取的。文本文件示例如下。Python字符串提取文本文件

我的文本文件样本:


Host: localhost:8080 
Connection: keep-alive 
..... 
..... 
{"token":"abcdefhutryskslkslksslslks=="}POST /fill/entry/login HTTP/1.1 

Host: localhost:8080 
Connection: keep-alive 
..... 
..... 
{"value":"abcdefghijklmnopqrstuvwxyz", 
"pass":"123456789zxcvbnmljhgfds", 
"token":"abcdefghijklmnopqrstuvwxyz=="}POST /fill/health HTTP/1.1 

在这里,如果你可以看到,我得到不同的反应。我需要捕获与开始{“值”并用“结尾}(所看到的样品中的响应的第二部分)的字符串。

论堆栈溢出搜索,我跨场景来他们提取字符串但无论他们有一个明确的起点和一个明确的终点。在我的情况下,即使起点可以唯一使用搜索字符串“{” URL”来识别,终点不能被认定为文本文件还包含多个其他括号。

任何建议/上获取从文本文件刺痛的特定部分(如上所述)将是真正有用的指针。

从解释甲re例如:

>>> with open('file') as f: 
... raw = f.read() 
>>> 
>>> import re 
>>> pat = re.compile(r'{"value":[^{]+}') 
>>> pat.findall(raw) 
['{"value":"abcdefghijklmnopqrstuvwxyz",\n "pass":"123456789zxcvbnmljhgfds",\n "token":"abcdefghijklmnopqrstuvwxyz=="}'] 
>>> pat.search(raw).group() 
'{"value":"abcdefghijklmnopqrstuvwxyz",\n "pass":"123456789zxcvbnmljhgfds",\n "token":"abcdefghijklmnopqrstuvwxyz=="}' 
+0

感谢您的想法。我现在可以获取价值。但是,如在您自己的解决方案中可用的那样,它会显示所有值。关于第二部分单独如何被提取的任何想法?我的意思是,从字符串开始“{”值“并在结束”}”。 – mbvee

+0

感谢Klashxx ..这工作就像一个魅力。 – mbvee

如果您的文件不是很大,可以使用file.readlines()将整个文本读入字符串,然后使用regular expression library来提取所需的部分。

+0

的文件大小较大。 – mbvee