python - 将 json 字符串作为参数传递给 Python 脚本会导致引号问题

标签 python json python-2.7

我想编写一个脚本,它接受一个参数,一个包含一些 json 数据的字符串,并且(为了简单起见)打印一些东西。

import argparse
import json

parser = argparse.ArgumentParser(description='json load and print')
parser.add_argument('-i','--inputstring', help='Input String in JSON format',required=True)
args = parser.parse_args()

inp = parser.parse_args()

data = json.loads(inp)

print(data['Employees'])

当我从命令行运行它时,我收到一个错误,因为我用来包装字符串的双引号以匹配 json 中的双引号结尾:
python myscript.py -i "{ "Employees": "name name"}"
Unrecognized arguments Employees...

如果我将 json 双引号切换为单引号,则 json 解析器将不起作用。

我该如何处理这样的事情?

最佳答案

如果您更改分配输入变量的方式,您的代码将按预期工作。改变这一行:

inp = parser.parse_args()


inp = args.inputstring
parse_args() 返回一个 argparse.Namespace 对象,因此您需要在将其传递给解析器之前从该对象中检索输入。此外,您需要在 shell 命令中转义双引号。通过上述更改运行,我得到了预期的输出:
python myscript.py -i "{ \"Employees\": \"name name\"}"

关于python - 将 json 字符串作为参数传递给 Python 脚本会导致引号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40660555/

相关文章:

python - 如何从二进制文件中读取除最后 X 字节以外的所有字节?

javascript - 减少从浏览器发送到服务器的对象数据的最佳方法

php - Phalcon 性能相关查询

python - selenium无法在知乎提交答案

python - 对 Python 中 time.clock 的行为感到困惑

Python - 无法修改 Django Rest Framework 中的 serializer.data 字典

python - 使用 zip 从列表创建 json

python - Flash 和 TCP 服务器之间的对话 (Python)

java -/日期(长+1000)/格式

c# - Python2.7 : Initialize constructor variable as byte array