问题标签 [shlex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用python从txt中删除空格
我有一个 .txt 文件(从网站上抓取为预先格式化的文本),其中的数据如下所示:
我想删除列之间的所有额外空格(它们实际上是不同数量的空格,而不是制表符)。然后我还想用一些分隔符(制表符或管道,因为数据中有逗号)替换它,如下所示:
环顾四周,发现最好的选择是使用 regex 或 shlex 进行拆分。两个类似的场景:
python - shlex:在 Python 3 中转义引号
我想拆分 ascii 文本
打印为 Python 字符串
进入
shlex.split(line)
不起作用,给一个ValueError("No closing quotation")
.
我尝试添加wordchars
如下:
但这又不是我的意图。
没有报价,一切都按预期工作:
如何解决这个问题?
编辑:我最接近的是:
这仍然不对。
编辑:示例字符串有些误导。它也应该能够分裂,比如说
shlex
没l1
问题。
python - Python:subprocess.Popen().communicate() 将 SSH 命令的输出打印到标准输出,而不是返回输出
这是我的 python 终端的副本:
我希望输出是('myhost', None)
. 为什么输出没有存储在通信()的返回元组中?
python - 当 I/O 文件的名称必须更改时 Python 中的命令
好的,我已经找到了如何在 Python 中执行复杂的命令,这篇文章如何在 python 脚本中运行我自己的外部命令
它确实有效,但在我的情况下,我正在执行一个循环以及每次迭代的名称inputfilename
和outputfilename
更改。我已经尝试过该解决方案,但它不起作用,因为它无法识别inputfilename
.
在循环中,inputfilename
是mbr{:03}_20161110.grb1.format(i)
在i
从 1 到 21 的循环中运行的位置。
谢谢你。
编辑:根据要求,循环是这样的:
循环探索目录并将mbr001
其mbr020
命名inputfile
为每个父目录。
gr_cp 是一个命令行工具,可以从inputfilename
to中提取一些变量outputfilename
(如过滤器)。它就像任何其他 shell 命令一样。问题是在循环中它不能识别inputfilename
.
python - Python:使用子进程和 Popen 打印输出
我有一个 python 程序,它将 cat 一个文件,然后仅当在输出中找到单词“oranges”时才打印输出。我想知道如果在输出中找到“橙子”,我怎么能扭转这个并且让程序不输出任何东西?
python - 使用 shlex.split 时保留引号
使用 shlex.split() 时如何保留“带空格的值”周围的引号?
谢谢
python - 如何知道 shlex.split 中的参数值
我有字符串变量 as --test abc -a a -b b c
,这是我的 linux 脚本的参数。
我正在使用 pythonsubprocess
来执行这个。
该字符串可能具有special
类似backtic
or的字符'
,--test \"it's my test\" -a a -b b c
在这种情况下,我必须使用pipes.quote
来引用该值。
我可以使用拆分它shlex.split
并拆分参数,我想知道
从列表中或shlex.split
如何检查哪个是值,哪个是参数?
我可以检查startswith('-') or startswith('--')
,但有没有机会,这个逻辑可能是错误的?
python - 使用 .Popen() 和 .shlex() 将文件加载到 deluge-console
我无法使用 .Popen() 和 .shlex() 获取通过 deluge-console 加载文件的脚本。我在 gnome-terminal 上使用 xubuntu 和 byobu。
def torrentLoad(url):
#client_run = subprocess.Popen(['deluged']])
sourceList = torrentWrite(sortXML(url))
print(sourceList)
for s in sourceList:
sleep(2)
delugeList = ['deluge-console', 'add', s]
load = subprocess.Popen(delugeList, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = load.communicate()
print(out, err)
变量 sourceList 包含解析 xml 并返回 torrent 文件位置列表的函数。(例如'/home/YOURHOME/Documents/torrents/file.torrent')
理论上这应该输入命令:deluge-console add /home/YOURHOME/Documents/torrents/file.torrent 直接到终端。请注意,我也在运行 Byobu。我不知道这是否会在其中发挥作用。
我得到的输出是nodda。Zilch。感谢您的帮助。
python - 重新创建 python 调用
是否可以从被调用的程序本身修补一个 python 程序的复制和粘贴调用?它不必是完全相同的调用字符串,但参数应该解析为相同的东西。
请注意' '.join(sys.argv)
,不幸的是,它不会削减它。这种方法的主要问题是它不能正确引用参数。考虑dummy.py
与import sys; print(sys.argv); print(' '.join(sys.argv))
运行python dummy.py "1 2"
打印:
当然,如果我们复制后者,我们将得到不同的调用。将每个参数用引号括起来也不起作用。考虑dummy2.py
:
这将打破:
python - shlex 在卷曲/智能引号上拆分
通过在 Python 3.6.3 中使用shlex模块,尝试通过空格拆分字符串,同时保留用大括号/智能引号 (“”) 括起来的内容。但是,它不能正常工作:
使用普通引号 ("),按预期工作:
那么,如何让 shlex 使用 qurly/智能引号?