Python:需要解析帮助!

标签 python regex parsing

我正在尝试检索 .lua 文件中的某些字段。最初我以为我可以用逗号分隔,但第二组大括号破坏了它。一个例子:

return { 
    { 6163, 0, "tv", false, {1302}, "ESPN Deportes", "ESPN Deportes es el", nil,"tv","936",nil,"4x3", mediaRestrictions={"m2g" } },
    { 57075, 0, "tv", false, {1302}, "Video Rola", "Video \"Música Para Tus Ojos\", uedes ver.", nil,"tv","948",nil,"4x3", mediaRestrictions={"m2g" } },
    { 717242, 0, "tv", false, {1302,1301,1288}, "Hits", "asdlfj", nil,"cliplinear","6310",nil,"4x3", mediaRestrictions={"m2g" } },
    { 122719, 0, "tv", false, {1302,1301,1288}, "Bombone", "asdf", nil,"tv","74",nil,"4x3", mediaRestrictions={"m2g" } },
}

So I would be looking for the following from the first line: "ESPN Deportes"(6th field), tv(9th), 936(10th)

God help me...or more likely a stackoverflow ninja. (Python)


Updated with solution

Solution as graciously provided by S.Mark:

res = conn.getresponse()
data = res.read()

# Hackisly transform the lua into json
data = re.sub('\w+=', '', data)
data = data.replace("return","")
data = data.replace("{","[").replace("}","]")
data = data.replace("nil","null")
data = data.replace(",]","]")
data = json.loads(data.strip())

最佳答案

可能会转换成json。

import json

text = r"""return { 
{ 6163, 0, "tv", false, {1302}, "ESPN Deportes", "ESPN Deportes es el", nil,"tv","936",nil,"4x3", mediaRestrictions={"m2g" } },
{ 57075, 0, "tv", false, {1302}, "Video Rola", "Video \"Música Para Tus Ojos\", uedes ver.", nil,"tv","948",nil,"4x3", mediaRestrictions={"m2g" } },
{ 717242, 0, "tv", false, {1302,1301,1288}, "Hits", "asdlfj", nil,"cliplinear","6310",nil,"4x3", mediaRestrictions={"m2g" } },
{ 122719, 0, "tv", false, {1302,1301,1288}, "Bombone", "asdf", nil,"tv","74",nil,"4x3", mediaRestrictions={"m2g" } },
}"""

obj = json.loads(text.replace("return","").replace("mediaRestrictions=","").replace("{","[").replace("}","]").replace("nil","null").replace("\n","").replace(",]","]").strip())

print obj

# [[6163, 0, u'tv', False, [1302], u'ESPN Deportes', u'ESPN Deportes es el', None, u'tv', u'936', None, u'4x3', [u'm2g']], [57075, 0, u'tv', False, [1302], u'Video Rola', u'Video "M\xfasica Para Tus Ojos", uedes ver.', None, u'tv', u'948', None, u'4x3', [u'm2g']], [717242, 0, u'tv', False, [1302, 1301, 1288], u'Hits', u'asdlfj', None, u'cliplinear', u'6310', None, u'4x3', [u'm2g']], [122719, 0, u'tv', False, [1302, 1301, 1288], u'Bombone', u'asdf', None, u'tv', u'74', None, u'4x3', [u'm2g']]]

for x in obj:
  print x[5], x[8], x[9]

#ESPN Deportes tv 936
#Video Rola tv 948
#Hits cliplinear 6310
#Bombone tv 74

关于Python:需要解析帮助!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5829050/

相关文章:

c# - 正则表达式 c# 不应匹配 boolean 运算符

python - 在 Python 中构建推理引擎

Python 的构造 - .sizeof() for construct depending on its parent

python - 将列添加到 CSV 文件并在该列中插入文件名

python - 如何从 pandas DataFrame 中绘制 timedelta 数据?

javascript - PEG.js 获取 ( 和 ) 之间的任何文本;

正则表达式删除 block 注释也删除 * 选择器

php - 如何通过 Laravel IoC 容器访问 Orchestra Xml Parser

python - 如何使用 Selenium 将 nba.stats.com 上的页面从 "1"更改为 "All"

python - 将背景颜色添加到作为子布局的布局(在另一个布局内)