Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327

Отделить кириллицу от латиницы и несколько своих условий

08.01.2021, 10:57. Показов 3487. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте в данный момент я отделяю так:
Python
1
2
3
4
words_a_z = [x for x in words if re.search('[a-z]', x) if
             x.startswith('var') != True and x.endswith('vz') != True and x[3].isnumeric() != True and x[
                 3].isnumeric() != True and x[9] + x[10].isnumeric() != True and x[15] + x[16] + x[
                 17].isnumeric() != True]
как это можно упростить?, то что знаки 9-10, а также 15-17 можно сгруппировать я в курсе
просто по хорошему у меня шаблон того, что нужно не пропустить такой:
var1vartz02tzvz000vz
после var цифры 1-6
после tz и vz любые цифры
спс

Добавлено через 2 часа 7 минут
вот со всеми условиями
Python
1
words_a_z = [x for x in words if re.search('[a-z]', x) if x.startswith('var') != True and x.endswith('vz') != True and x[3] != [1, 2, 3, 4, 5, 6] and x[4:8] != 'vartz' and x[9:10].isnumeric() != True and x[11:14] != 'tzvz' and x[15:17].isnumeric() != True]
проще это можно записать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2021, 10:57
Ответы с готовыми решениями:

Транслитерация из латиницы в кириллицу
Добрый вечер! Как я могу транслитерировать фамилию KUZNETSOV на кириллицу чтобы у меня получился КУЗНЕЦОВ, а не КУЗНЕТСОВ?

Транслитерация из латиницы в кириллицу
Подскажите, вот нашел такой макрос: Option Explicit Function Translit$(iValue$) Dim iRussian$, iCount%, iTranslit As Variant ...

функция перевода с латиницы на кириллицу
есть ли какая то функция перевода с латиницы на кириллицу('ghbdtn' перевело в 'привет')? по гуглу полазил много скриптов видел но ни один...

12
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
08.01.2021, 11:18
можете привести в вопросе больше примеров входных данных и результат, который вы хотите получить для каждой строки?

Добавлено через 6 минут
просто не очень понятно что вы пытаетесь сделать

Добавлено через 7 секунд
Ципихович Эндрю,
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
08.01.2021, 11:22  [ТС]
мне нужно, чтобы в список НЕ попали
var1vartz02tzvz000vz
var1vartz04tzvz004vz
var1vartz04tzvz008vz
var1vartz04tzvz010vz
var1vartz04tzvz012vz
var1vartz04tzvz016vz
var1vartz04tzvz020vz
var могут быть 1-6
в tz и vz могут быть любые цифры в первом случае две цифры, во втором три цифры
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
08.01.2021, 11:34
Лучший ответ Сообщение было отмечено Ципихович Эндрю как решение

Решение

А тут как раз тебе пригодятся регулярки.

Python
1
2
>>> bool(re.match(r'^var[1-6]vartz\d{2}tzvz\d{3}vz', 'var1vartz02tzvz000vz'))
True
Добавлено через 5 минут
Точнее
Python
1
r'^var[1-6]vartz\d{2}tzvz\d{3}vz$'
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
08.01.2021, 11:41  [ТС]
гут, даже соединилось
Python
1
words_a_z = [x for x in words if re.search('[a-z]', x) if(re.match(r'^var[1-6]vartz\d{2}tzvz\d{3}vz', x)) == True]
темка коротенькая получилась))
0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
08.01.2021, 11:42
Python
1
2
3
4
5
6
7
8
9
10
11
12
import re
 
re_exclude = re.compile(r'var\dvartz\d\dtzvz\d\d\dvz')
words = '''var1vartz02tzvz000vz
var1vartz04tzvz004vz
var1vartz04tzvz008vz
var1vartz04tzvz010vz
var1vartz04tzvz012vz
var1vartz04tzvz016vz
var1vartz04tzvz020vz
somethingdifferent'''.split()
print([word for word in words if not re_exclude.match(word)])
Вывод:
Python
1
['somethingdifferent']
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
08.01.2021, 11:44  [ТС]
да понял я
^ и $ Начало и конец строки соответственно
гут, спс
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
08.01.2021, 11:53
Не вижу смысла гнаться за уменьшением количества строк. Надо что-то сделать, например, отфильтровать список - напиши функцию. И пусть она хоть одну строку занимает, хоть 10, хоть 100. Главное она делает свою работу и только её.
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
08.01.2021, 11:59  [ТС]
пост № 1.0
Python
1
2
3
4
words_a_z = [x for x in words if re.search('[a-z]', x) if
             x.startswith('var') != True and x.endswith('vz') != True and x[3].isnumeric() != True and x[
                 3].isnumeric() != True and x[9] + x[10].isnumeric() != True and x[15] + x[16] + x[
                 17].isnumeric() != True]
пост № 1.1
Python
1
words_a_z = [x for x in words if re.search('[a-z]', x) if x.startswith('var') != True and x.endswith('vz') != True and x[3] != [1, 2, 3, 4, 5, 6] and x[4:8] != 'vartz' and x[9:10].isnumeric() != True and x[11:14] != 'tzvz' and x[15:17].isnumeric() != True]
пост № 5
Python
1
words_a_z = [x for x in words if re.search('[a-z]', x) if(re.match(r'^var[1-6]vartz\d{2}tzvz\d{3}vz', x)) == True]
эволюция налицо
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
08.01.2021, 12:11
И что? Можно и без регулярок написать.
Python
1
2
3
4
5
6
7
8
9
10
11
12
def myfilter(line: str) -> bool:
    if len(line) != 20:
        return True
    if line[:3] != 'var':
        return True
    if line[4] not in '123456':
        return True
    #…
    return False
 
print(myfilter('var1vartz04tzvz008vz'))
#ords_a_z = [x for x in words if myfilter(x)]
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
16.01.2021, 20:48  [ТС]
сорри опять прошу помощи, чего-то вроде на схожем примере не работает, список тот же, чтобы НЕ попало
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
мне нужно, чтобы в список НЕ попали
var1vartz02tzvz000vz
var1vartz04tzvz004vz
var1vartz04tzvz008vz
var1vartz04tzvz010vz
var1vartz04tzvz012vz
var1vartz04tzvz016vz
var1vartz04tzvz020vz
var могут быть 1-6
в tz и vz могут быть любые цифры в первом случае две цифры, во втором три цифры
код
Python
1
2
без_var = [x for x in text_split[1:] if x != 'edmn' if
                                         x != chr(10) if (re.match(r'^var[1-6]vartz\d{2}tzvz\d{3}vz$', x)) != True]
но упорно попадает
среди прочего
3632-, а равно
3633-var1vartz07tzvz050vz
3634-нарушение
это если вывести массив, номер-элемент массива
что только не делал, игрался с
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
^ и $ Начало и конец строки соответственно
подскажите как подправить? спс
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
17.01.2021, 08:16
Врёшь же:
Python
1
2
>>> bool(re.match(r'^var[1-6]vartz\d{2}tzvz\d{3}vz$', 'var1vartz07tzvz050vz'))
True
Или в конце строки пробел или ещё что
Python
1
2
>>> bool(re.match(r'^var[1-6]vartz\d{2}tzvz\d{3}vz$', 'var1vartz07tzvz050vz '))
False
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
17.01.2021, 11:12  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
>>> bool(re.match(r'^var[1-6]vartz\d{2}tzvz\d{3}vz$', 'var1vartz07tzvz050vz '))
False
прежде чем написать я конечно же пробовал, убирал $
самое странное после того как в Вашем примере убрать $ - становится Тру, а у меня нет...var1vartz07tzvz050vz и ему подобные попадают в массив...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.01.2021, 11:12
Помогаю со студенческими работами здесь

Перехват Клавиш. Перевод латиницы в кириллицу
Здравствуйте уважаемые программисты. Случилась следующая проблема: делаю программу, которая нажатые клавиши на клавиатуре сохраняет в файл,...

Выполнить транслитерацию текста с латиницы в кириллицу
Создать программу, анализировать и обрабатывать введен пользователем текст в консоли соответствии с заданными условиями: - выполняет...

Функция для транслитерации из латиницы в кириллицу Python
Добрый день! Мне снова не даёт покоя транслитерация. Ниже приведён код функции, по которому можно провести транслитерацию из латиницы...

Как можно перевести единицы измерения с латиницы на кириллицу
Как можно перевести единицы измерения с латиницы на кириллицу. Пробовала какую-ту русификацию для маткада. Единицы измерения переводит, но...

Переименование всех файлов в папке из латиницы в кириллицу, не затрагивая расширение файла
Подскажите, может быть есть у кого уже готовое решение?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru