Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将JSON输出发布到PubSub时出现问题。A';u';正在添加到每个字段_Python_Json_Google Bigquery_Publish Subscribe_Google Cloud Pubsub - Fatal编程技术网

Python 将JSON输出发布到PubSub时出现问题。A';u';正在添加到每个字段

Python 将JSON输出发布到PubSub时出现问题。A';u';正在添加到每个字段,python,json,google-bigquery,publish-subscribe,google-cloud-pubsub,Python,Json,Google Bigquery,Publish Subscribe,Google Cloud Pubsub,我有一个脚本,从芝加哥市提取,获取一个json文件,然后发布到Pub Sub。一旦数据进入Pub Sub,我就有一个数据流模板,将数据拉到Google Big Query中。最终数据移动到BQ失败,当我在脚本中打印输出时。我在所有球场前都得到了一个u,我相信这会把比赛搞砸。有没有其他人遇到过这个问题,并且知道我的代码有什么问题,以及如何删除“u”呢。我尝试了多次修复,但都没有成功。样本输出如下所示: from __future__ import unicode_literals from sod

我有一个脚本,从芝加哥市提取,获取一个json文件,然后发布到Pub Sub。一旦数据进入Pub Sub,我就有一个数据流模板,将数据拉到Google Big Query中。最终数据移动到BQ失败,当我在脚本中打印输出时。我在所有球场前都得到了一个u,我相信这会把比赛搞砸。有没有其他人遇到过这个问题,并且知道我的代码有什么问题,以及如何删除“u”呢。我尝试了多次修复,但都没有成功。样本输出如下所示:

from __future__ import unicode_literals
from sodapy import Socrata
import json
from io import StringIO
from google.oauth2 import service_account
from oauth2client.client import GoogleCredentials
from google.cloud import pubsub_v1
import time
import datetime
import urllib
import urllib.request
import argparse
import base64

credentials = GoogleCredentials.get_application_default()
# change project to your Project ID
project="xxxx"
# change topic to your PubSub topic name
topic="xxxx"


res = urllib.request.urlopen('https://data.cityofchicago.org/resource/8v9j-bter.json')
res_body = res.read()
traffic=json.loads(res_body)
publisher = pubsub_v1.PublisherClient()
topicName = 'projects/' + project + '/topics/' + topic
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project,topic)
for key in traffic:
        publisher.publish(topicName,str.encode(str(key)))
        print(key.items())
("最后一次","2010-07-21 14:50:53.0","长度","0.69","寿命","41.985032613",

我的代码如下:

from __future__ import unicode_literals
from sodapy import Socrata
import json
from io import StringIO
from google.oauth2 import service_account
from oauth2client.client import GoogleCredentials
from google.cloud import pubsub_v1
import time
import datetime
import urllib
import urllib.request
import argparse
import base64

credentials = GoogleCredentials.get_application_default()
# change project to your Project ID
project="xxxx"
# change topic to your PubSub topic name
topic="xxxx"


res = urllib.request.urlopen('https://data.cityofchicago.org/resource/8v9j-bter.json')
res_body = res.read()
traffic=json.loads(res_body)
publisher = pubsub_v1.PublisherClient()
topicName = 'projects/' + project + '/topics/' + topic
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project,topic)
for key in traffic:
        publisher.publish(topicName,str.encode(str(key)))
        print(key.items())

您正在描述一个Python构造:Unicode字符串以u'前缀显示

见:

例如,使用“普通”字符串和unicode字符串构建数组:

>>> [u'a', 'a']
[u'a', 'a']
不用太担心,它们是相同的字符串:

>>> u'a' == 'a'
True
现在当你说“我在所有的场地前都得到了一个u”,我相信这会把比赛搞砸。你在哪里看到这个?这是Python代码的一部分,还是您看到这些u'也显示在BigQueryWebUI上

查看您发布的代码,is似乎在强制所有字符串都是Unicode,并使用来自_future _u; import Unicode u literals的

>>> "a"
'a'
>>> from __future__ import unicode_literals
>>> "a"
u'a'

数据永远不会进入大查询,因为它与字段不匹配。我制作了一个小的云函数来测试导入,而不是使用数据流作为测试。我在位置1处获得JSON中的意外标记u'然后失败的错误。很抱歉,我得到的错误是“我在位置1处获得JSON中的意外标记u然后失败的错误”。上面的错误中有一个“不正确”。因此,在翻译过程中,u确实会引起问题。如果有一个最小的示例失败,请发布该示例的完整COFF代码和完整的错误堆栈跟踪