我有许多大文件,其中包含我需要提取的一些字符串。数据如下:
"text":"string","token":"1357580140-7","display_token":0,"display_ttl":1357828250,"coeff2_ts":"2013-01-08","timestamp":1357845041}}
我做了一些研究,并认为RE是最好的。我只需要打印出“string”而不是“text”:bit。所需的输出只是“字符串”
def regEx():
os.chdir("C:/Users/Luke/Desktop/FilesWithString")
files = os.listdir(".")
for x in files:
re.search(r'(?<="text":)("[^"]+")',x).group(0)
答案 0 :(得分:2)
你可以使用lookbehind:
your_string = '"text":"string"'
match = re.search(r'(?<=:)("[^"]+")',your_string)
if match:
print match.group(0) #'"string"'
这会在:
之后立即捕获用双引号括起来的任何内容。
作为旁注,使用更新的字符串,它看起来非常像JSON
- 或ast.literal_eval
可以处理的内容。如果是这种情况,您可以使用其中任何一个将其评估为一个字典,您可以直接下标以获取字符串。
答案 1 :(得分:1)
你有一个JSON字符串,只需使用json
module将其解码为Python结构:
import json
data = json.loads(inputstring)
print data['somekey']['token']
print data['somekey']['display_ttl']
答案 2 :(得分:0)
如果没有re:
,你可以更快地完成s = '"text":"string"'
print s[7:]
>>> "string"
如果text
部分沿着不同的线变化,你可以测量它的长度 - 通过在冒号上分割线并取第一部分:
s = '"a text":"a string"'
s[len(s.split('":')[0]) + 2:]
>>> '"a string"'
甚至更有效率,使用index
函数:
s = '"a text":"a string"'
s[s.index('":') + 2:]
>>> '"a string"'