我正在尝试用 Python 编写一个程序,该程序对一段代码执行各种任务。其中大部分我都做过,但有一个让我困惑。我对行话的了解不够,无法有效地搜索有关此问题的帮助,因此我只能在这里提问。
我需要创建一个进程,将括号之间的任何内容作为单个“ block ”读取。然后,如果“ block ”包含特定单词或短语,Python 代码将删除它。
示例(简化)文本文件内容:
...
entity
{
"id" "38794"
"classname" "info_player_teamspawn"
}
entity
{
"id" "38795"
"classname" "func_detail"
solid
}
entity
{
"id" "38796"
"classname" "path_track"
}
...
在此示例中,将列出数千个此类实体。我希望 python 代码删除任何包含“solid”一词的括号内的任何内容(包括“实体”前言),即: 这将是最终的结果:
...
entity
{
"id" "38794"
"classname" "info_player_teamspawn"
}
entity
{
"id" "38796"
"classname" "path_track"
}
...
不需要更正 ID。我们不需要担心这一点。
我希望我能很好地解释我的问题,并且希望有一个可能的解决方案。如果有人想要一个行话库,我可以用它来帮助解释或研究我可能遇到的任何进一步的问题,我也将不胜感激!
非常感谢!
最佳答案
首先,让我们编写一个生成器来生成标题(“实体”)及其各自的 block :
def blocks(filename):
title, block = '', None
with open(filename) as fp:
for line in fp:
if '{' in line:
block = line
elif block is not None:
block += line
else:
title = line
if '}' in line:
yield title, block
title, block = '', None
然后读取 block 并输出通过测试的 block :
for title, block in blocks('input.txt'):
if 'solid' not in block:
print title, block
关于Python - 将括号之间的内容读取为单个 'block',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12930521/