Как стать автором
Обновить
2
0
Леонид Матвеев @matwel

Инженер-программист

Отправить сообщение

Для справки, небольшая оптимизация кода (куда успел дочитать).

if "http" in fio or "https" in fio or "Http" in fio or "Https" in fio:  # Здесь лишние проверки
    ...
if "http" in fio or "Http" in fio:  # Это эквивалентно
    ...
if re.search("[Hh]ttp", fio):
    ...
if "http" in fio.lower():  # Возможно устроит даже это
    ...

fio = "".join(x for x in fio if x.isalpha() or x == " ").strip().replace("тирре", "-")
fio = re.sub(r'[^-\s\w]', '', fio)  
# И тирре не понадобится заменять туда-сюда, ведь в тексте может
# быть реальный фрагмент "тирре", который не следует заменять на "-"

Для работы с текстами очень пригодится опыт использования регулярных выражений

https://habr.com/ru/companies/piter/articles/793118/

Я так и предполагал, Ваш красивый код VBA это бахвальство. Я просил конкретный код у Вас. Мне без разницы как Вы его можете получить, Вы делаете вид, что знаете столько способов и нет ни одного конкретного результата. Только даёте "мудрые" советы, как получить результат. Искуственный интелект не поможет тому, у кого отсутствует свой. Я очень хочу ошибаться в отсутствии у Вас интелекта, для написания конкретного кода VBA с помощью чего угодно

Не хочу думать, что Ваши комментарии это примитивное бахвальство дилетанта

Я (думаю и другие ко мне присоеденятся) Вас УМОЛЯЮ, приведите "код VBA гораздо красивее и понятней", на который у вас уйдёт всего 20 секунд и который выполняет задачу определения появившихся в папке новых файлов. Очень не хочется так и остаться в неведении о такой красоте. Я никогда не поверю, что Вы не можете это сделать. Или я был прав, говоря что кода небудет? Слышал в среде военных такое изречение (сразу прошу прощения у военных, которые могут увидеть в этом что-то обидное): "Для того, что-бы учить других, не обязательно уметь (мочь) самому"

Всё это не качества языка, а возможности конкретной IDE, которых для Python огромное множество (тыц), в отличии от VBA. Я не пробовал использовать их все, но десяток из них пробовал. Во всех встречал всё описанное Вами для VBA, кроме изменения текста в процессе отладки. Возможно подобное и есть в IDE, которые я не использовал, обещать не могу. В Python можно посмотреть реализацию функций и классов из библиотек (например, для поучиться или сделать своё похожее). Язык програмирования это инструмент, для каких то целей лучше VBA, для других Python. Это всё равно что спорить что лучше молотк или пила. В отличии от Вас, я имею опыт программирования и в VBA и в Python. Мои заявления не голословные. Но если человеку интересен код, то я сел и за 5-10 минут ему набросал работающий вариант на Python. А ВЫ, кроме голословного заявления о том как это легко и просто, ничего конкретного привести не сумели и я уверен не сумеете. Приведите код на VBA, который делает то же самое, докажите всем, что я ошибаюсь в отношении ВАС! Вам же MS Excel/Word поможет сделать это, или это то же только общие слова вместо конкретного ответа реально работающим кодом. Да и скажете сколько времени у Вас это заняло. Думаю времени займёт раз в 10 больше, поэтому Вы даже не возьмётесь это сделать.

Мы, надеюсь, не будем начинать "религиозные войы", какой язык самый православный?

  1. В Пайтоне править код "на лету" (вангую, здесь имеется ввиду правка кода, выполняющегося в режиме отладки) нельлзя, как то небыло в этом надобности (может потому что нельзя). Дело в том, что интерпретатор Пайтон  сначала преобразует текст в байткод, а потом его выполняет, может поэтому нельзя налету.

  2. Приведите пожалуйста код VBA, выполняющий эту же задачу. Оценим вместе его красоту и простоту. Или это только Ваше голословное заявление?

  3. Согласимся не брать во внимание то, что для выполнения кода на VBA надо обязательно купить или украсть Виндовс и Офис.

from os.path import split
from glob import glob
fs = glob(r'C:\Python38-32\*.dll')
for f in fs:
    print(split(f)[-1])
'''
python3.dll
python38.dll
vcruntime140.dll
'''

from glob import glob
from pathlib import Path

fs0 = ['C:\\Python38-32\\python3.dll',
       'C:\\Python38-32\\python38.dll']
print('fs0 =', fs0)

fs1 = [str(f) for f in Path(r'C:\Python38-32').glob('*.dll')]
print('fs1 =', fs1)

fs2 = glob(r'C:\Python38-32\*.dll')
print('fs2 =', fs2)

print('fs1 == fs2 ->', fs1 == fs2)

dfs = set(fs1) - set(fs0)
print('set(fs1) - set(fs0) =', dfs)

'''
fs0 = ['C:\\Python38-32\\python3.dll', 'C:\\Python38-32\\python38.dll']
fs1 = ['C:\\Python38-32\\python3.dll', 'C:\\Python38-32\\python38.dll', 'C:\\Python38-32\\vcruntime140.dll']
fs2 = ['C:\\Python38-32\\python3.dll', 'C:\\Python38-32\\python38.dll', 'C:\\Python38-32\\vcruntime140.dll']
fs1 == fs2 -> True
set(fs1) - set(fs0) = {'C:\\Python38-32\\vcruntime140.dll'}
'''

Главное автоматизировать рутину, а начинающие не могут знать всех возможностей Python и его библиотек.

Список итерируемых объектов, например:


>>> list(map(lambda *x: x, (1,2), (3,4)))
[(1, 3), (2, 4)]

Или так:

from serial.tools.list_ports import comports

for comp in comports():
    print(f'{comp = }')
    print(comp)
    print(f'{comp.vid = :04X}, {comp.pid = :04X}')
    prt, desc, hwid = comp
    print(f'{prt = }\n{desc = }\n{hwid = }')
    print('comp.__dict__ = {')
    for k, v in comp.__dict__.items():
        print(f'    {k}: {v},')
    print('}')

Статья в общем интересная, познавательная, но вот техническая грамотность оставляет осадочек:

  • "... свет в электроэнергию мощностью 1000 МВт в час и ..."

  • "... стало вырабатываться 200 МВт энергии ..."

  • "... будет вырабатывать 700 МВт энергии ..."

  • "... потребуется производить более 42 000 МВт возобновляемой энергии ..." Почему так безграмотно используются единицы измерениия физических (можно и электрических) величин? Мощность измеряется в ватах (Вт, кВт, МВт и т.д.), без всяких "в час". А энергия измеряется не в ватах, а в джоулях, калориях, в МВт·ч для нашего случая. Выговаривается это "в мегаватчасах", и никак не "мегават в час", хотя не уверен, что автор понимает разницу.

Ещё короче

print(*('Fiz'[i%3*9:] + 'Buz'[i%5*9:] or i for i in range(100)), sep='\n')

Допускаю, что на некоторых языках будет ещё короче

А вот так на 3-а символа короче

print(*(f"{'' if i%3 else 'Fiz'}{'' if i%5 else 'Buz'}" or i for i in range(100)), sep='\n')

Так на 2-а символа длиннее

print('\n'.join(f"{'' if i%3 else 'Fiz'}{'' if i%5 else 'Buz'}" or f'{i}' for i in range(100)))

Пользуюсь Питоном давно (пишу разные утилиты для повседневной автоматизации). PyCharm часто использую только для доустановки пакетов, действительно удобно. Но он заточен на многофайловые проекты и постоянно пытается склонить к этому. Поэтому, в большенстве случаев, хватает PyScripter-а. Простой, без излишеств

Давно SVG-рисунки добавляю Либром, Ворд не может. Не знаю как там сейчас последние версии, может уже и научились

Для Питона надо ```python
range(b, a, -1)


> Оказывается, цикл с использованием range на Python также не позволяет двигаться от большего значения к меньшему, range(b, a) при b>a задает просто пустой диапазон.

Для истинных ценителей, надо минимум механики, остальное электроника. На колесо двигатель, на педали генератор. Два регулятора — мощность педалирования и ограничитель скорости движения (или тормоз). Вне зависимости от того, какая горка, усилие на педалях одинаково ну а скорость уже электроника подберёт в зависимости от уклона горки. Далее, конечно, напрашивается суперконденсатор (или аккумулятор со всеми прилагающимися плюшками) для рекуперации при торможении. И как в песне: "Мы за ценой не постоим"

1

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность