首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python创建字典并发送POST请求的问题

使用Python创建字典并发送POST请求的问题
EN

Stack Overflow用户
提问于 2015-02-19 17:18:58
回答 1查看 1.3K关注 0票数 0

我绞尽脑汁地花了5个小时来找出如何在Python中以编程的方式创建一个具有特定值的字典,在其中我从列表中获取它。这听起来很容易(而且肯定是这样),但我完全迷失在双引号、字符串值和转义字符的错误中。任何帮助都将是非常感谢的。至少要理解我到底做错了什么:

我会尽量更详细。我想要做的是以编程方式创建以下内容:

代码语言:javascript
复制
    checkNode = {'statements':[
      {"statement":"MATCH (n:RealNode { id: "1" }) SET n.telecomType = 'P', n.buildingType= 'c' RETURN n"}, 
        {"statement":"MATCH (n:RealNode { id: "2" }) SET n.telecomType = 'P', n.buildingType= 'w' RETURN n"}, {...}, {...}
     ]}

上面是一个Neo4J查询,我想通过发送这样的POST请求来执行该查询:

代码语言:javascript
复制
    mkr = requests.post(url, data=json.dumps(checkNode), headers=headers)

这是我所遵循的程序:

  1. 首先,我将x转换为一个字符串,其中x是: X={“语句”:“MATCH (n:RealNode { id:"1”})设置n.telecomType = 'P',n.buildingType= 'c‘返回n"} stringX = str(x)
  2. 然后,我将这个字符串附加到一个列表(mylist())中。最后,列表中有许多字符串。
  3. 然后,我使用" join“方法连接列表中的所有值,并用逗号分隔它们: allStatement = ','.join(mylist)
  4. 然后创建变量"checkNode“,这是我将发送给我的POST请求的变量: checkNode ={“语句”:allStatement}
  5. 在第4步和第6步之间,我尝试了一系列事情,比如替换引号和将变量"checkNode“转换为字符串。
  6. 我发出了请求: mkr = requests.post(url,data=json.dumps(checkNode),headers=headers)打印(mkr.text)

请求从未发送过。我打印了checkNode变量,它如下所示:

代码语言:javascript
复制
    {'statements': ["{'statement': MATCH (n:RealNode { id: 'P3301041101' }) SET n.telecomType = 'P', n.buildingType= 'sealed' RETURN n},{'statement': CREATE (dsld:DslSldBconf {nodeType:'P3301041101', id: 'DSL-SLD48-BCONF-ALU', temaxia: '1'})}..."]}

    I think one of the problems here is the double quotes after the [

我花了几个小时试验不同的参数,但我无法使它工作。我在这里做错什么了?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-19 19:01:28

您不应该在手工字符串处理方面乱搞;json模块为您完成了所有这些工作。你想要的更像是:

代码语言:javascript
复制
x = {"statement":"MATCH (n:RealNode { id: "1" }) SET n.telecomType = 'P', n.buildingType= 'c' RETURN n"}
statement_list = [x]

# add any more statements to statement_list, probably using append()

checkNode = {'statements': statement_list}

mkr = requests.post(url, data=json.dumps(checkNode), headers=headers)
print(mkr.text)

另外,对于您通过网络发送的内容,请注意什么是str,什么是bytes

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28612732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档