带括号字符串的Python pyparsing文件

带括号字符串的Python pyparsing文件,python,text-parsing,pyparsing,brackets,Python,Text Parsing,Pyparsing,Brackets,我有一个包含以下字符串结构的文件: {dh31100_eurex_internalisation_uat} {DS_REG_PRIMARY} {dh31100} {MMI_PLUGIN_API} {MMI_PLUGIN_API} {20140730} {ss26879_cc34355_BP_SK_UAT_REGRESSION} {DS_REG_PRIMARY} {dr48750} {MMI_PLUGIN_API} {MMI_PLUGIN_API} {20140730} {js02041_ba89

我有一个包含以下字符串结构的文件:

{dh31100_eurex_internalisation_uat} {DS_REG_PRIMARY} {dh31100} {MMI_PLUGIN_API} {MMI_PLUGIN_API} {20140730}
{ss26879_cc34355_BP_SK_UAT_REGRESSION} {DS_REG_PRIMARY} {dr48750} {MMI_PLUGIN_API} {MMI_PLUGIN_API} {20140730}
{js02041_ba89385_spreads} {DM_SERVER} {ba89385} {MMI_PLUGIN_API} {MMI_PLUGIN_API} {20140731}
{js02041_sc84647_GBP_Analytics} {DS_REG_PRIMARY} {js02041} {MMI_PLUGIN_API} {MMI_PLUGIN_API} {20140721}
...
整个文件的样式相同,通常包含>100行

考虑到一致的结构(总是6组括号),创建语法的最佳方法是提取括号内的字符串并从中创建列表

最终的游戏将是在列表元素之间执行比较

for line in f.readlines():
    line.strip('{}').split('} {')`

应将文件中的每一行转换为字符串列表。然后,您可以根据需要对它们进行比较。

这将搜索一组带引号的字符串。它将返回字符串列表的列表

import re
import sys


# (?<={) = look-behind assertion. Only match if previous token was {
# .*?    = Non-greedy search for any character
# (?=})  = look-ahead assertion. Only match if next token will be }
pattern = '(?<={).*?(?=})'
pattern = re.compile(pattern)

with open(sys.argv[1]) as input_file:
    data = [pattern.findall(line) for line in input_file]

print data
重新导入
导入系统

#(?欢迎使用堆栈溢出!每行是否表示一组数据?每行中的一项是否是查找该数据的有用键?
{}
中是否有空白?{}括号内没有空白-但是如果您看到上面的内容,括号之间有一个空格example@Robᵩ 谢谢!每一行都是一组数据,但每一行都是独立的,并且与其他行不同。只会在每一行数据中进行比较。不,不幸的是,没有有用的键。很可能会在列表中的元素#1和#3之间进行比较。例如,从上面的第三行开始,比较将针对{js02041_sc84647_GBP_Analytics}和{js02041}。