Mysql json .dump () отступ строки для просмотра - PullRequest
1 голос
/ 16 апреля 2020

Я использую следующую строку кода для выполнения и печати данных из моей базы данных sql. По какой-то причине это единственная команда, которая работает для меня.

json_string = json.dumps(location_query_1)

Мой вопрос заключается в том, что при печати json_string отображаются данные в следующем формате:

enter image description here

Код Actions.py :

class FindByLocation(Action):
    def name(self) -> Text:
        return "action_find_by_location"

    def run (self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            doman: Dict[Text, Any])-> List[Dict[Text,Any]]:

        global flag
        location =  tracker.get_slot("location")
        price = tracker.get_slot("price")
        cuisine = tracker.get_slot("cuisine")
        print("In find by Location")
        print(location)
        location_query = "SELECT Name FROM Restaurant WHERE Location = '%s' LIMIT 5" % location
        location_count_query = "SELECT COUNT(Name) FROM Restaurant WHERE Location = '%s'" % location

        location_query_1 = getData(location_query)
        location_count_query_1 = getData(location_count_query)

        if not location_query_1:
            flag = 1
            sublocation_view_query = "CREATE VIEW SublocationView AS SELECT RestaurantID, Name, PhoneNumber, Rating, PriceRange, Location, Sublocation FROM Restaurant WHERE Sublocation = '%s'"%(location)
            sublocation_view = getData(sublocation_view_query)
            dispatcher.utter_message(text="یہ جگہ کس ایریا میں ہے")
        else:
            flag = 0


            if cuisine is None and price is None:

                json_string = json.dumps(location_query_1)
                print(isinstance(json_string, str))
                print("Check here")

                list_a=json_string.split(',')
                remove=["'",'"','[',']']

                for i in remove:
                    list_a=[s.replace(i, '') for s in list_a]


                dispatcher.utter_message(text="Restaurants in Location only: ")
                dispatcher.utter_message(list_a)

Что мне делать, если данные отображаются в формате вертикального списка (с отступом новой строки) и без скобок и кавычек? Спасибо

1 Ответ

1 голос
/ 16 апреля 2020

Прежде всего, вы пытались читать ваши данные в pandas объект? Я сделал несколько программ с базой данных sqlite, и это сработало для меня:

df = pd.read_sql_query("SELECT * FROM {}".format(self.tablename), conn)

Но теперь в части форматирования строки:

# this code should do the work for you
# first of all we have our string a like yours
a="[['hallo'],['welt'],['kannst'],['du'],['mich'],['hoeren?']]"
# now we split the string into a list on every ,
list_a=a.split(',')
# this is our list with chars we want to remove
remove=["'",'"','[',']']

# now we replace all elements step by step with nothing
for i in remove:
    list_a=[s.replace(i, '') for s in list_a]

print(list_a)
for z in list_a:
    print(z)

Вывод будет:

['hallo', 'welt', 'kannst', 'du', 'mich', 'hoeren?']
hallo
welt
kannst
du
mich
hoeren?

Я надеюсь, что смогу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...