Проблема публикации вывода JSON в PubSub. 'U' добавляется в каждое поле - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть скрипт, который вытаскивает из города, если Чикаго захватывает файл json и затем публикуется в Pub Sub. Как только данные попадают в паб, у меня есть шаблон потока данных, который перетаскивает данные в Google Big Query. Окончательное перемещение данных в BQ не удается, и когда я печатаю вывод в сценарии. Я получаю «u» перед всеми полями, которые, как я считаю, портят матч на поле. Кто-нибудь еще имел эту проблему и знал, что не так с моим кодом и как, возможно, удалить «U». Я пробовал несколько исправлений, но ни один из них не работал. Пример выхода указан ниже:

('_ last_updt', '2010-07-21 14: 50: 53.0'), ('_length', '0.69'), ('_lif_lat', '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())

1 Ответ

0 голосов
/ 13 ноября 2018

Вы описываете конструкцию Python: строки Unicode отображаются с префиксом u '.

См:

Например, построение массива с «нормальной» строкой и строкой в ​​юникоде:

>>> [u'a', 'a']
[u'a', 'a']

Не беспокойтесь об этом, это одинаковые строки:

>>> u'a' == 'a'
True

Теперь, когда вы говорите: " Я получаю знак" u "перед всеми полями, которые, как я считаю, портят совпадение полей. " Где вы это видите? Это часть кода Python, или вы видите, что они также отображаются в веб-интерфейсе BigQuery?

Глядя на код, который вы разместили, кажется, что все строки должны быть Unicode с from __future__ import unicode_literals:

>>> "a"
'a'
>>> from __future__ import unicode_literals
>>> "a"
u'a'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...