- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
根据文档,在 Python 2.7.3 中,shlex 应该支持 UNICODE。但是,当运行下面的代码时,我得到:UnicodeEncodeError: 'ascii' codec can't encode characters in position 184-189: ordinal not in range(128)
我做错了什么吗?
import shlex
command_full = u'software.py -fileA="sequence.fasta" -fileB="新建文本文档.fasta.txt" -output_dir="..." -FORMtitle="tst"'
shlex.split(command_full)
具体错误如下:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shlex.py", line 275, in split
lex = shlex(s, posix=posix)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shlex.py", line 25, in __init__
instream = StringIO(instream)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 44-49: ordinal not in range(128)
这是我的 mac 使用来自 macports 的 python 的输出。我在使用“ native ”python 2.7.3 的 Ubuntu 机器上遇到完全相同的错误。
最佳答案
shlex.split()
代码将 unicode()
和 str()
实例包装在 StringIO()
对象,它只能处理 Latin-1 字节(因此不是完整的 unicode 代码点范围)。
如果您仍想使用 shlex.split()
,则必须进行编码(UTF-8 应该可以);该模块的维护者意味着现在支持 unicode()
对象,只是不支持 Latin-1 代码点范围之外的任何对象。
编码、拆分、解码给我:
>>> map(lambda s: s.decode('UTF8'), shlex.split(command_full.encode('utf8')))
[u'software.py', u'-fileA=sequence.fasta', u'-fileB=\u65b0\u5efa\u6587\u672c\u6587\u6863.fasta.txt', u'-output_dir=...', u'-FORMtitle=tst']
A now closed Python issue试图解决这个问题,但该模块非常面向字节流,并且没有实现新的补丁。目前使用 iso-8859-1
或 UTF-8
编码是我能为您想到的最好的。
关于python - shlex.split 仍然不支持 unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14218992/
sample = ",," values = shlex.shlex(sample, posix=True) values.quotes = '"' values.whitespace = ',' v
感谢 shlex 这种字符串,我想拆分: str = 'This doesn''t work' 54e+5 15 .FALSE. 'Another example of "test"' 预期结果: 这
我将 Popen 与 shlex 一起用于 yum 命令,并使用 --exclude 标志来传递要排除的软件包列表。由于某种原因,shlex 似乎没有保留双引号。有什么指示我该怎么做吗? >>> im
我需要将一系列字符串拆分为由空格表示的 3 个组成部分。这些字符串有时包含子列表,但始终作为字符串的最后一个组成部分。 我之前使用 Shlex 取得了巨大的成功,但我不再获得所需的结果,因为我最近的子
这个简单的代码: s = "it's a nice day..." s = shlex.split(s) 将导致 ValueError: No closing quotation错误: Traceba
我正在使用 shlex 解析 csv 文件,并且需要保留连续的空白字符,如下所示... line = 'a, b, "c, z",,,d,e,f' spltr = shlex.shlex(line)
我有以下文字: 'sudo -S java -cp spinn3r-client-3.4.06.jar com.spinn3r.api.Main --vendor=test --remote-filt
这个问题已经有答案了: How do I use subprocess.Popen to connect multiple processes by pipes? (9 个回答) 已关闭 7 年前。
如何使用 Python 的 shlex 拆分字符串,同时保留 shlex 拆分的引号字符? 示例输入: Two Words "A Multi-line comment." 期望的输出: ['Two'
语言:Python v2.6.2 操作系统:AIX 5.3 我正在使用 Python 将一些文件从备份恢复到测试系统 - 所有命令都以下面的方式调用,但有些命令根本不想工作。 #!/usr/bin/p
在 Python 中,如何使用 shlex.split() 或类似的方法来拆分字符串,只保留双引号?例如,如果输入是 "hello, world"is what 'i say' 那么输出将是 ["he
如何反转 shlex.split 的结果?也就是说,我怎样才能获得一个带引号的字符串 "resemble that of a Unix shell" ,给定一个我希望引用的字符串的 list? 更新0
如何在使用 shlex.split() 时保留“带空格的值”周围的引号? s = "SOME_VAR=\"value with spaces\" VAR2=value2" shlex.split(s)
是否有 Java 的 shlex 替代品?我希望能够像 shell 处理它们一样拆分引号分隔的字符串。例如,如果我发送: one two "three four"并执行拆分,我想收到 token on
我想看看 shlex对于我正在尝试构建的东西来说是一个不错的选择,所以我想我会把它放在 debug mode 中玩弄它。只有 shlex 的构造函数有这个 weird thing it does :
根据文档,在 Python 2.7.3 中,shlex 应该支持 UNICODE。但是,当运行下面的代码时,我得到:UnicodeEncodeError: 'ascii' codec can't en
Python 的标准库有一个 shlex.quote函数接受一个字符串并返回一个保证被 Unix shell 解释为相同字符串的函数。这是通过将字符串放在单引号中并转义出现在其中的任何单引号字符来实现
我想拆分ascii文本 1 'K\^o, Suk\'e' 打印为 Python 字符串 line = "1 'K\\^o, Suk\\'e'\n" 进入 ['1', 'K\\^o, Suk\\'e']
我将如何在 Node.js 中执行以下操作?我意识到可能没有内置功能或为此编写的模块,那么我该如何实现呢? >>> import shlex >>> shlex.split("-a arga -b \
我需要在 elisp 中解析命令行,例如: (shlex-split "command \"Some file with spaces\" someother\ quote") ;;That give
我是一名优秀的程序员,十分优秀!