带括号字符串的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}。