Как убрать из вывода словаря одинарные ковычки?
Мне нужно убрать из словаря одинарные ковычки, которые появляются при выводе. Как это можно сделать? Я пробовал через replace, но вывод тогда вообще странный получается..
def weather_tomorrow_St():
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0"
}
url = "https://www.gismeteo.ru/weather-stepnoye-212930/tomorrow/"
q = requests.get(url=url, headers=headers)
result = q.text
soup = BeautifulSoup(result, 'lxml')
rane_dir = [x.text for x in soup.select('div.widget-row-precipitation-bars div.row-item div')]
for x in range(0,8):
if rane_dir[x] == '0':
rane_dir[x] = 'Осадков нет'
else:
rane_dir[x] = 'Возможен дождь'
time_dir = [x.text for x in soup.select('div.widget-row-time div.row-item span')]
data_time = list(map(f, time_dir))
temp_dir = [x.text for x in soup.select('div.widget-oneday span.unit_temperature_c')]
gen_inf = list(zip(temp_dir, rane_dir))
data = {
'Список погоды на завтрашний день, Степное': '\n',
(data_time[0]): str(gen_inf[0])[1:-1],
(data_time[1]): str(gen_inf[1])[1:-1],
(data_time[2]): str(gen_inf[2])[1:-1],
(data_time[3]): str(gen_inf[3])[1:-1],
(data_time[4]): str(gen_inf[4])[1:-1],
(data_time[5]): str(gen_inf[5])[1:-1],
(data_time[6]): str(gen_inf[6])[1:-1],
(data_time[7]): str(gen_inf[7])[1:-1]
}
for elem in data:
for str in elem:
str.replace("'", "")
print(str)
with open('weather_tomorrow.json', 'w', encoding="utf-8") as json_file:
json.dump(data, json_file, indent=4, ensure_ascii=False)
Вот словарь:
data = {
'Список погоды на завтрашний день, Саратов': '\n',
(data_time[0]): str(gen_inf[0])[1:-1],
(data_time[1]): str(gen_inf[1])[1:-1],
(data_time[2]): str(gen_inf[2])[1:-1],
(data_time[3]): str(gen_inf[3])[1:-1],
(data_time[4]): str(gen_inf[4])[1:-1],
(data_time[5]): str(gen_inf[5])[1:-1],
(data_time[6]): str(gen_inf[6])[1:-1],
(data_time[7]): str(gen_inf[7])[1:-1]
}
Функция f(Она просто ставит двоеточие во времени):
def f(line):
if len(line) > 3:
return f'{line[:2]}:{line[2:]}'
return f'{line[:1]}:{line[1:]}'
Код вывода:
with open('weather_tomorrow.json', encoding='utf-8') as file:
data_weather = json.load(file)
for k, v in data_weather.items():
weather_data = f"{k}: {v}"
await message.answer(weather_data)
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
data = {
'Список погоды на завтрашний день, Саратов': '\n',
(data_time[0]): str(gen_inf[0])[1:-1],
(data_time[1]): str(gen_inf[1])[1:-1],
(data_time[2]): str(gen_inf[2])[1:-1],
(data_time[3]): str(gen_inf[3])[1:-1],
(data_time[4]): str(gen_inf[4])[1:-1],
(data_time[5]): str(gen_inf[5])[1:-1],
(data_time[6]): str(gen_inf[6])[1:-1],
(data_time[7]): str(gen_inf[7])[1:-1]
}
Кавычки у вас появляются из-за str, поменяйте этот кусок кода на такой:
data = {
'Список погоды на завтрашний день, Степное': '\n'
}
for i in range(8):
data[data_time[i]] = ', '.join(gen_inf[i])
Вообще тут почти всё нужно менять, но пока этого должно хватить.