gpt4 book ai didi

python - 从命令行传递特殊字符

转载 作者:行者123 更新时间:2023-12-01 04:10:53 35 4
gpt4 key购买 nike

我在从命令行向 python 传递特殊字符时遇到问题。这是我的脚本:

# -*- coding: utf-8 -*-
import sys

if __name__ =="__main__":

if len(sys.argv) == 2 :
str = sys.argv[1]
else :
str = '\r\nte st'
print (str)

这些是我的测试用例:

D:\>testArgv.py "\r\nt est"
\r\nt est

D:\>testArgv.py

te st

我想知道如何从命令行将参数传递给 python 以实现像后一种情况那样的目标。或者我应该如何更改我的脚本。

最佳答案

您可以使用decode 'unicode_escape' text encoding来自codecs 模块将原始字符串转换为典型的 ol' 字符串:

# -*- coding: utf-8 -*-
import sys
from codecs import decode

if __name__ =="__main__":

if len(sys.argv) == 2:
my_str = decode(sys.argv[1], 'unicode_escape')
# alternatively you transform it to a bytes obj and
# then call decode with:
# my_str = bytes(sys.argv[1], 'utf-8').decode('unicode_escape')
else :
my_str = '\r\nte st'
print (my_str)

最终结果是:

im@jim: python3 tt.py "\r\nt est"

t est

这适用于 Python 3。 In Python 2 str types are pretty ambiguous as to what they represent ;因此,它们有自己的 decode 方法,您可以使用它来代替。因此,您可以删除 from codecs importdecode 并将该行更改为:

my_str.decode('string_escape')

获得类似的结果。

<小时/>

附录:不要使用 str 这样的名称作为变量,它们会掩盖 Python 内置类型的名称。

关于python - 从命令行传递特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34974158/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com