import requests
r = requests.get("http://search.maps.sputnik.ru/search/addr?format=json&lat&q=Песочная+аллея,+дом+1")
print(r.json()['result']['address'][0]['features'][0]['geometry']['geometries'][0]['coordinates'])
# [37.674698, 55.79341]
coordinates = []
def search_key(data, key):
if isinstance(data, list):
for x in data:
search_key(x, key)
if isinstance(data, dict):
for x in data.keys():
if x == key:
coordinates.append(data[x])
else:
search_key(data[x], key)
search_key(r.json(), 'coordinates')
print(coordinates)
# [[37.674698, 55.79341]]
kb = InlineKeyboardMarkup()
kb.add('Маг', 'Воин', 'Вор')
InlineKeyboardButton
, ему вы задаете текст, и callback_data, которую потом с помощью декоратора @dp.callback_query_handler
обрабатываете Все что вам хочетсяclass States(StatesGroup):
characterAge = State()
characterBranch = State()
#special - работа с бд
@dp.message_handler(state=States.characterAge, content_types=ContentTypes.TEXT)
async def characterAge(message: types.Message, state: FSMContext):
try:
int(message.text)
special.add_new_character_age(message.text, message.from_user.username)
await state.update_data(message=message.text.title())
buttons = [InlineKeyboardButton('Маг', callback_data='branch:mag'),
InlineKeyboardButton('Маг', callback_data='branch:voin'),
InlineKeyboardButton('Маг', callback_data='branch:vor'),]
kb = InlineKeyboardMarkup()
kb.add(buttons)
await message.answer(text='Выберите одну из трех ветвей развития вашего персонажа(Влияет на диалоги)', reply_markup=kb)
await States.characterBranch.set()
except IndentationError:
await message.reply('Существа не могут жить с отрицательным возрастом')
return
except NameError as err:
print(err)
await message.reply('Возраст не может состоять из букв')
return
@dp.callback_query_handler(Text(startswith='branch:'), state=States.characterBranch)
async def characterBranch(callback_query: types.CallbackQuery, state: FSMContext):
branch_dict = {'mag': 'маг',
'voin': 'воин',
'vor': 'вор'}
branch = callback_query.data.removeprefix('branch:')
await state.update_data(characterBranch=branch_dict[branch])
if branch == 'mag':
special.add_new_character_branch('1', callback_query.from_user.username)
elif branch == 'voin':
special.add_new_character_branch('2', callback_query.from_user.username)
elif branch == 'vor':
special.add_new_character_branch('3', callback_query.from_user.username)
await message.answer()
await state.finish()
letter = 'Если плоскость проходит через данную прямую, параллельную другой плоскости, и пересекает эту плоскость, то прямая пересечения плоскостей параллельна данной прямой'
def chunk(st, lns):
import random
mv = st.split()
mv = [' '.join(mv[x:x+lns]) for x in range(0, len(mv), lns)]
return ' '.join(random.sample(mv, len(mv)))
print(chunk(letter, 3))
import random
sentence = 'Если плоскость проходит через данную прямую, параллельную другой плоскости, и пересекает эту плоскость, то прямая пересечения плоскостей параллельна данной прямой'
chunk_size = 3
words = sentence.split()
chunked_words = []
for i in range(0, len(words), chunk_size):
chunked_words.append(words[i:i + chunk_size])
random.shuffle(chunked_words)
new_sentence = ''
for chunk in chunked_words:
new_sentence += ' '.join(chunk) + ' '
print(new_sentence)
if ord(text[i + j]) - ord(elems[-1][-1]) < 2
text = ...
text_len = len(text)
max_len = 0
max_idx = 0
seq_idx = 0
prev = 0
for i, x in enumerate(text):
if ord(x) < prev:
seq_len = i-seq_idx
if seq_len > max_len:
max_len = seq_len
max_idx = seq_idx
seq_idx = i
elif i==text_len-1:
seq_len = i-seq_idx+1
if seq_len > max_len:
max_len = seq_len
max_idx = seq_idx
prev = ord(x)
print(max_len, text[max_idx:max_idx+max_len])
soup = BeautifulSoup(product_url, 'lxml')
# ищем всё, что находится внутри тега <div class="product-content-v1">
product_detailt_page = soup.find_all('div', {'class': 'product-content-v1'})
# ищем нужные внутренние элементы(в Вашем случае эти блоки с инфой)
for child in product_detailt_page:
try:
full_name = child.find(class_='brand-and-name').get_text()
except AttributeError:
full_name = ''
from tkinter import Button, Entry, StringVar, Tk
from tkinter.constants import E, END
from tkinter.filedialog import askopenfilename
class App(Tk):
def __init__(self):
super().__init__()
self.resizable(False, False)
self.title('InClass')
# !org
self.labelORG = Button(self, text='Предприятие')
self.labelORG.grid(row=1, sticky=E)
self.stringORG = StringVar()
self.entryORG = Entry(self, textvariable=self.stringORG)
self.entryORG.grid(row=1, column=1, columnspan=2)
self.buttonORG = Button(self, text='Выбрать:', command=self._select_CSV_table()) # , self.entryORG
self.buttonORG.grid(row=1, column=3)
def _select_CSV_table(self):
my_path = askopenfilename(filetypes=(('CSV file', '*.csv'), ('Any', '*')))
self.entryORG.delete(0, END)
self.entryORG.insert(0, my_path)
print(my_path)
if __name__ == '__main__':
app = App()
app.mainloop()
# пример был для sqlite, но принцип одинаков
class DataBase():
def __init__(self, database_name):
self.conn = sqlite3.connect(database_name)
self.cursor = self.conn.cursor()
def commit(self):
self.conn.commit()
def close(self):
self.conn.close()
# затем создаем один раз объект-соединение и с ним уже работаем
db = DataBase('...')
c = db.cursor
c.execute('CREATE TABLE ...)')
c.execute('INSERT INTO TABLE ...)')
db.commit()
# где нужно используем один и тот же объект-соединение
def takeCSV():
global pat
pat = filedialog.askopenfilename(filetypes = (("CSV Files","*.csv"),))
root.title(f'file at {pat}')
def runCheck():
global pat
if pat != '':
os.system(f'start {pat}')
....
# и убрать параметр pat
bCheck = Button(text='check', command=runCheck)
def takeCSV():
root.filename = filedialog.askopenfilename(filetypes = (("CSV Files","*.csv"),))
root.title(f'file at {root.filename}')
def runCheck():
if root.filename:
os.system(f'start {root.filename}')
....
# и тоже убрать параметр pat
bCheck = Button(text='check', command=runCheck)