我有bash字符串变量逐渐附加的文件:
URI += "path \
path \
path \
"
<some other code>
#URI += "path"
URI += "path \
path"
您可能会注意到,有几种不同的附加方式,部分是跨几行的。这些文件中还有其他代码。
现在,我尝试编写一个获取变量内容(引号之间的所有内容)的函数:
def grepVar(filepath, var):
list = []
with open(filepath, "r") as file:
for num, line in enumerate(file, 1):
if var in line:
if line.count('"') is 2:
list.append(line)
# until here it works for "URIs" over 1 line
else:
num = num + 1
while(line.count('"') is 0):
list.append(line)
num = num + 1
return list
print grepVar(path, "URI")
因此,在这种else
情况下,我尝试手动引发循环并附加所有行,直到出现另一个引号(while
-loop)。我不确定是否可以坚持这个想法,还是必须完全放弃它。在这种情况下,您能不能给我提示如何解决我的问题?由于具体的种类,我不确定是否描述得好。
就像line
通过更高级别的for num, line in enumerate(file, 1):
循环给出的一样,您无法while (line...)
在该循环内部使用。
解决此问题的常用方法是保存线之间的状态。您的职能可能会变成(我num
因为不了解要求而取消了管理):
def grepVar(filepath, var):
lst = []
inquote = False
with open(filepath, "r") as fil:
for num, line in enumerate(fil, 1):
if inquote:
lst.append(line)
if line.count('"') > 0:
inquote = False
elif var in line:
if line.count('"') == 2:
lst.append(line)
else:
lst.append(line)
inquote = True
return lst
您还应该避免为自己的变量使用标准的Python单词,例如list
of file
,因为它们隐藏了标准含义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句