#python #numpy #tkinter
#python #numpy #tkinter
Вопрос:
итак, я извлек базу данных и создал свой текстовый файл
я прочитал текстовый файл с помощью panda read csv и искал в нем слово с помощью этого кода:
row , col = np.where(data == word)
print(data.loc[row])
допустим, я использую serach для mulan
, он печатает его следующим образом:
TITLE YEAR IMDB
1 Mulan 2020 tt4566758
теперь я хочу, чтобы это было вставлено в список
(код):
row , col = np.where(data == word)
list1.insert(END,data.loc[row])
но это отображается так, а не так, как выглядит фрейм данных:
Ответ №1:
Я немного смущен отображаемым вами кодом, но я бы рекомендовал вам сохранить данные в виде словаря в файле .json и выполнить поиск по нему вместо использования массива numpy. С python это довольно просто.
редактировать: вы запросили пример.
Вот пример .файл json
{
"Movies": [
{
"Name": "Mulan"
"Year": "2020"
"Imdb": "t5000"
},
{
"Name": "The lion king"
"Year": "2005"
"Imdb": "t3576"
}
]
}
Сначала вы импортируете json
import json
Затем вы открываете данные с помощью
file = open("filename",r)
Затем вы загружаете данные в диктофон, это называется десериализацией.
data = json.load(file)
Наконец, вы выполняете итерацию и выполняете поиск по данным с помощью
cnt = 0
found = 0
for movie in data["Movies"]:
if movie["Name"] == "The lion king":
found = cnt
cnt = 1
row = data["Movies"][found]
Если данные найдены, они сохраняются в переменной строке.
Теперь для listbox код прост
listRow = row["Name"] " " row["Year"] " " row["Imdb"]
Lb = Listbox(Tk())
Lb.insert(1, "NAME YEAR IMDB")
Lb.insert(2, listRow)
Вы можете настроить интервал между ИМЕНЕМ, ГОДОМ и IMDB, а также в ListRow по мере необходимости.
Я специально постарался сделать это как можно более простым.
Комментарии:
1. как мне выполнить поиск по ключевому слову в файле json? и тогда как его правильно отобразить?
2. дело в том, что я хочу, чтобы он отображался как фрейм данных, когда я обычно печатаю, он печатается красиво и организованно, но когда я вставляю его в список, он разрушается
3. сначала сохраните данные в переменной в виде строки. Затем вы можете сказать somevariable = data.json()[«ключевое слово»] [«Вложенное ключевое слово»]. Использование файла json более аккуратно при создании иерархии данных. Проблема с вашим списком заключается в том, что поле считает, что метки являются частью данных, и удаляет разрыв строки. вам нужно будет сделать заголовки одной строкой, а данные — другой. @comingfall
4. можете ли вы привести мне пример? из поиска и вставки?