有没有pythonic方法来读取tcsh csh shell字列表变量

2024-05-17 04:36:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从应用程序输出的cshell文件中读取变量。应用程序假定我们正在使用cshell读取变量。我正在使用Python。
该文件包含两(T)个csh字列表外壳变量lnPARAM和lnVAL

set lnPARAM = ('path' 'job' 'delete_source'                      )
set lnVAL   = ('/opt/genesis/fw/jobs/48039/input' '48039' 'no'   )

我想为path、job和delete_source创建变量,设置为字符串“/opt/”、“48039”和“no”。
我已将行拆分为一个列表

>>> line0 = "set lnPARAM = ('path' 'job' 'delete_source'  )"
>>> line1 = "set lnVAL   = ('/opt/genesis/fw/jobs/48039/input' '48039' 'no' )"
>>> ln_param = [value.strip("'") for value in line0.split(' = ')[1].lstrip('(').rstrip(')').split(' ') if value != '']
>>> ln_val = [value.strip("'") for value in line1.split(' = ')[1].lstrip('(').rstrip(')').split(' ') if value != '']
>>> r = dict(zip(ln_param, ln_val))
>>> r['path']
'/opt/genesis/fw/jobs/48039/input'

shlex似乎不是解决方案

>>>import shlex
>>> shlex.split(line0)
['set', 'lnPARAM', '=', '(path', 'job', 'delete_source', ')']

我希望其他人有一个比我组装的更优雅的解决方案


Tags: pathgenesissourceinputvaluejobsjobdelete
1条回答
网友
1楼 · 发布于 2024-05-17 04:36:37

您可以先提取括号中的字符串,然后再将其传递给shlex.split

import re
shlex.split(re.findall(r'\((.*)\)', line0)[0])

相关问题 更多 >