0

我有许多包含一些我需要提取的字符串的大文件。数据如下:

"text":"string","token":"1357580140-7","display_token":0,"display_ttl":1357828250,"coeff2_ts":"2013-01-08","timestamp":1357845041}}

我做了一些研究,并决定RE是最好的。我只需要打印出“字符串”而不是“文本”:位。所需的输出将只是“字符串”

def regEx():
os.chdir("C:/Users/Luke/Desktop/FilesWithString")
files = os.listdir(".")
for x in files:
    re.search(r'(?<="text":)("[^"]+")',x).group(0)
4

3 回答 3

2

你可以使用一个lookbehind:

your_string = '"text":"string"'
match = re.search(r'(?<=:)("[^"]+")',your_string)
if match:
    print match.group(0) #'"string"'

这将捕获紧跟在双引号中的任何内容:

作为旁注,使用您更新的字符串,它看起来非常像JSON- 或者ast.literal_eval可以处理的东西。如果是这种情况,您可以使用其中任何一个将其评估为字典,您只需下标即可获取字符串。

于 2013-02-07T14:11:21.653 回答
1

您有一个 JSON 字符串,只需使用json模块将其解码为 Python 结构:

import json

data = json.loads(inputstring)

print data['somekey']['token']
print data['somekey']['display_ttl']
于 2013-02-07T14:34:19.430 回答
0

您可以更快地完成它而无需重新:

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"'
于 2013-02-07T14:11:04.457 回答