@qirimdnaproject · Post #113 · 12.10.2025 г., 13:57
Saka ancestry [Kazakh_steppe + Tian_Shan] #scythians#genetics
Hashtags
TGINSIGHT SIMILAR POSTS
Изворен канал @pythonotes · Post #121 · 20 јул.
Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для URL, имени файла, имени объекта в каком-то софте и тд. Требования совместимости простые: в тексте должны быть только допустимые символы. Обычно это a-z, 0-9 и "_" или "-". То есть, только прописные буквы латинского алфавита и цифры (как пример). Допустим, нам нужно название статьи в блоге преобразовать в slug для добавления его в URL этой статьи. Как это лучше всего сделать? В Django по умолчанию есть готовая функция slugify для таких случаев. Но я её никогда не использую. Почему? Потому что её недостаточно! Приведём пример >>> from django.utils.text import slugify >>> slugify('This is a Title') 'this-is-a-title' Пока всё отлично >>> slugify('This is a "Title!"') 'this-is-a-title' Спец символы удалились, всё хорошо. >>> slugify('Это заголовок статьи') '' Вот и приехали 😢. Если текст не английский то буквы просто игнорируются. Можно это поправить >>> slugify('Это заголовок статьи', allow_unicode=True) 'это-заголовок-статьи' Но тогда мы не вписываемся в условие. У нас появилась кириллица в тексте. Так как я часто пишу сайты для русскоязычных пользователей эта проблема весьма актуальна. Я не использую стандартную функцию и всегда пишу свою. Оригинал я не беру в расчёт и пишу полностью свою функцию. И так, по порядку: 🔸1. Исходный текст: >>> text = 'Мой заголовок №10 😁!' Взял специально посложней со специальными символами. 🔸2. Транслит Необходимо сделать транслит всех символов в латиницу. Здесь очень выручает библиотека unidecode. Помимо простого транслита кириллицы в латиницу она умеет преобразовывать спец символы и иероглифы в текстовые аналоги. from unidecode import unidecode >>> unidecode("Ñ Σ ® µ ¶ ¼ 月 山") 'N S (r) u P 1/4 Yue Shan' Очень крутая библиотека, советую👍 В нашем случае получаем такое преобразование: >>> text = unidecode(text) >>> print(text) 'Moi zagolovok No. 10 !' Отличный транслит. Смайл просто удалился, хотя я ждал что-то вроде :). Ну и ладно, всë равно невалидные символы. А еще наш код уже поддерживает любой язык, будь то хинди или корейский. 🔸4. Фильтр символов Unidecode не занимается фильтрацией по недопустимым символам. Это мы делаем в следующем шаге через regex. Просто заменим все символы на "_" если они вне указанного диапазона. >>> text = re.sub(r'[^a-zA-Z0-9]+', '_', text) >>> print(text) 'Moi_zagolovok_No_10_' Символ "+" в паттерне выручает когда несколько недопустимых символов идут рядом. Все они заменяются на один символ "_". 🔸5. Slugify Осталось удалить лишние символы по краям и сделать нижний регистр >>> text = text.strip('_').lower() >>> print(text) 'moi_zagolovok_no_10' Получаем отличный slug! 😎 🌎 Полный код в виде функции. ______________ PS. Проверку что в строке остался хоть один допустимый символ я бы вынес в отдельную функцию. #libs#tricks#django
Пребарај: #scythians
@qirimdnaproject · Post #113 · 12.10.2025 г., 13:57
Saka ancestry [Kazakh_steppe + Tian_Shan] #scythians#genetics
Hashtags
@r1az93 · Post #1494 · 01.08.2024 г., 17:47
"آماده سازی برای دفن". فرهنگ پازیریک ، قرن چهارم قبل از میلاد ، پنجمین بارو پازیریک. پنجمین بارو پازیریک بخشی از یک گروه هشت بارو در دره رودخانه بولشوی اولاگان در کوه های آلتای است. پنجمین بارو با مجموعه ای از چیزها ثروتمندترین آنها است و توسط S. I. Rudenko در سال 1949 حفاری شد. زیر خاکریز سنگی به ارتفاع 4 متر و قطر 42 متر یک گودال قبر به عمق 4 متر و مساحت 55 متر مربع وجود داشت. گودال توسط دو چوب پوشانده شده بود. بین آنها یک لایه سنگ به وزن مجموع 3 تن بود. اتاق دفن به شکل یک کابین چوبی دوگانه سه ستون پشتیبانی در دیوارهای شمالی و جنوبی داشت که وزن را محدود می کرد. بعد از اینکه سارقان باستانی تخته های چوبی و سقف دوگانه را قطع کردند ، آب شروع به نفوذ به اتاق کرد. با شروع زمستان ، یخ زد و به لطف شیب سنگی ، در تابستان آب نشد. این یک لنز یخ زیر تپه ایجاد کرد که اشیاء ساخته شده از مواد آلی را حفظ می کرد ، از جمله مومیایی های مرحوم. در قسمت شمالی گودال دفن ، 9 اسب پیدا شد: 5 اسب سوار و 4 اسب مهار. در کنار اسب های مهار ، یک ارابه 4 چرخ با شعاع ، که هیچ مکانیسم چرخشی نداشت ، که در آن چهار اسب در یک سونامی مهار شدند ، از هم پاشیده شده بود. در این واگن همسر رئیس به دنیای بعدی رفت ، زمانی که برای رئیس خود اسب سواری آماده شد. در پنجمین بارو پازیریک در یک چوب سارکوفاگ 5 متری ، اجساد مومیایی شده رئیس و همسرش قرار داشت. مرد حدود 55 سال سن داشت ، قدش 176 سال بود. به طور کلی ، اشراف پازیریک 170-180 سانتی متر قد داشتند. مردان معمولی پازیریک با رشد پایین تر ، به طور متوسط 164 سانتی متر مشخص شدند. در بخش عمده ای از عشایر آلتای قفقاز از نوع "شمالی" بودند ، موهای روشن (از قهوه ای و بلوند تیره تا بلوند) و چشم های روشن داشتند ، این نیز توسط انسان شناسی جمجمه ها نشان داده می شود (بله ، هر نوع نژادی دارای رنگدانه خاصی از چشم ، مو و رنگ پوست است) و قطعات حفظ شده مو در مومیایی ها. اما اغلب ، حتی در میان اشراف ، قفقاز با ویژگی های مغولویی وجود دارد ، که با ازدواج خارجی و ازدواج های سلسله ای با زنان دیگر قبایل غیر اسکیتی همراه است. "Подготовки к погребению". Пазырыкская культура, IV век до н.э., Пятый Пазырыкский курган. Пятый Пазырыкский курган входит в группу из восьми курганов в долине реки Большой Улаган в Горном Алтае. Пятый курган самый богатый из них по набору вещей и был раскопан С.И. Руденко в 1949 году. Под каменной насыпью высотой 4 метра и диаметром 42 метра находилась могильная яма глубиной 4 метра площадью 55 кв. м. Яму перекрывали два наката из брёвен. Между ними был слой камней общим весом 3 тонны. Погребальная камера в виде двойного сруба имела три опорных столба у северной и южной стен, которые сдерживали этот груз. После того, как древние грабители прорубили бревенчатый накат и двойной потолок, вода стала просачиваться в камеру. С наступлением зимы она промерзала и, благодаря каменному откосу, не оттаивала летом. Благодаря чему под курганом образовалась ледяная линза, сохранившая предметы из органических материалов, включая мумии покойных. В северной части могильной ямы обнаружили 9 лошадей: 5 верховых и 4 упряжных. Рядом с упряжными в разобранном виде лежала 4-х колёсная повозка со спицами, которая не имела поворотных механизмов, в которую цугом запрягали четверку лошадей. На этой повозке жена вождя отправлялась в мир иной, когда для самого вождя были подготовлены верховые кони. В Пятом Пазырыкском кургане в колоде-саркофаге длиною 5 м. лежали мумифицированные тела вождя и его жены. Мужчина был европпеоидом примерно 55 лет, ростом 176. В целом, пазырыкская аристократия была ростом 170-180 см. Рядовые пазырыкские мужчины отличались более низким ростом, в среднем 164 см. В основной своей массе алтайские кочевники были европеоидами "северного" типа, имели светлые волосы (от каштановых и темно-русых до блонда) и светлые глаза, на это также указывает антропология черепов (да, каждому расовому типу присуща определенная пигментация глаз, волос и тона кожи) и сохранившиеся фрагменты волос у мумий. Но нередко, даже среди знати встречаются европеоиды с монголоидными чертами, что связано с экзогамией и династическими браками с женщинами других нескифских племён. #scythians#indoeuropean#скифы#индоевропейцы Kār-nāmag ī Āryān | Подписаться👑