gpt4 book ai didi

python - 使用 argparse 获取包含 "or ' 的输入

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:02 24 4
gpt4 key购买 nike

我制作了一个快速的 python 脚本,可以将 ASCII 转换为 Unicode 并返回。我通过 argparse 接受输入,所以它必须包含在引号内,即 ./Converter.py -a "there's my friend"。然后脚本将输出逗号分隔的 Unicode 值。

当然 ' 会破坏输入,我知道我可以通过在它前面放一个\来逃避 ';但是,出于某种原因,这会停止添加逗号。例如:

./Convert.py "\"hi\""

输出:

34104, 105, 34

如您所见,34​​ 和 104 之间应该有一个逗号和一个空格。这是代码:

def CharCode(text):
print "Unicode values are:",
length = len(text)
for letter in text:
Unicode_values = ord(letter)
sys.stdout.write(str(Unicode_values))
if letter != text[-1]:
sys.stdout.write(', ')
sys.stdout.write('\r\n')

如果我删除

if letter != text[-1]: 

这阻止了问题的发生,但随后在 Unicode 值字符串的末尾添加了一个逗号,这是我不想要的。

因此,我的问题是 a) 如何防止这种情况发生? b) 有没有更好的方法来获取这种类型的输入,例如,我会更好地设置 raw_input 吗?

非常感谢任何帮助,谢谢!

最佳答案

你的情况

if letter != text[-1]: 

表示只要最后一个字符不等于最后一个字符的值就写一个逗号和空格字符 - 在这种情况下,'(您的第一个字符)与'(您的最后一个字符)是相同的字符。您应该更改条件以检查它确实是最后一个字符,而不是该字符与最后一个字符相同。你可以这样做

for i, letter in enumerate(text):
#stuff
if i < len(text) - 1:
sys.stdout.write(', ')

但更好的方法可能是使用连接方法:

print u', '.join([str(value) for value in unicode_values])

此外,如果您不想使用引号让您的 shell 将您的输入作为一个 arg 发送给您的脚本,argparse 有 nargs 选项(docs),例如 ' +' 用于收集尽可能多的参数。但是,您仍然需要转义您想要的引号,并且您必须假设这些参数之间的空格。 (像 ' '.join(args) 这样的东西只会近似你的输入)

关于python - 使用 argparse 获取包含 "or ' 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940947/

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