Задать вопрос
  • Как реализовать цикл удаление слов из строки в dataframe?

    @PavelMos
    1. Как записан населенный пункт в locality_name ? Если 'деревня Медвежья', то функция её не обработает, потому что if проверяет на совпадение с элементом списка целиком, а не деревню отдельно. Имхо проще не делать проверку дополнительную, а обрабатывать сразу всё подряд
    2. Нужно пробел/ы после удалённого слов/а убирать через lstrip или добавить пробел к словам в списке в регекспе,
    3. Добавить варианты Деревня, Город, Посёлок

    wordlist = ['Посёлок','Поселок','поселок','посёлок','городской','городского','типа','деревня','Деревня']
    
    def locality_id(row):
        name_id = row['locality_name']
        name_id = re.sub('(' + '|'.join(wordlist) + ')','',name_id).lstrip()
        return name_id
    
    
    for idx, row in df1.iterrows():
         print ('cell=', df1.loc[idx, 'locality_name'])
         df1.loc[idx, 'locality_name']=new_cell
         new_cell=locality_id(row)
         print ('new_cell=',df1.loc[idx, 'locality_name'])
    Ответ написан
    Комментировать
  • Как отпарсить текст в Python?

    @PavelMos
    Здесь можно без парсинга регулярными выражениями обойтись, а использовать разделение функцией разделения строки split, которая встроена в каждый объект типа строка
    Далее из результата разбивки
    ['ID: 001', ' Username: Ivan', ' Balance: 01.00', ' Status: active', '']
    берутся элементы 0,1,2, снова разбиваются по ':'
    ' Username: Ivan' ->[' Username',' Ivan']
    и затем исключается оставшийся слева пробел через взятие строки-результата как списка символов без нулевого элемента [1:]

    str1='ID: 001; Username: Ivan; Balance: 01.00; Status: active;'
    out=str1.split(';')
    id=out[0].split(':')[1][1:]
    username=out[1].split(':')[1][1:]
    balance=out[2].split(':')[1][1:]
    Ответ написан
    Комментировать
  • Как применить функцию к массиву numpy?

    @PavelMos
    через list comprehension
    на входе array - список из списков по 4 элемента. В task() передаётся элемент-список из 4 элементов, по элементам которого она считает это значение и записывает его пятым значением в новый элементы, который добавляет в новый массив
    array_out=[ [i[0],i[1],i[2],i[3],task(i)] for i in array]
    Ответ написан
    Комментировать
  • Как в Exchangelib получить все элементы папки Входящие и всех ее подпапок?

    @PavelMos
    Посмотреть вручную, что содержится в объекте, который должен перебираться в цикле, есть ли у него вообще э
    dir(account)
    print(account)
    а также
    print(account.__doc__)
    print(account.folder.__doc__)
    Ответ написан
  • Парсинг xml. Как обойти проблему с одной позицией в документе?

    @PavelMos
    Так сделать цикл и встроить обработку возможности отсутствия
    Ответ написан
    Комментировать
  • Как записать все значения из столбца B google таблиц в список на Python?

    @PavelMos
    clients = ''.join([str(x) for x in data])
    в начале сказано [test0@gmail.com, test1@gmail.com, ....., а тут в join пусто '', он будет склеивать их в сплошную строку, а не в запятая + пробел
    ", ".join(....
    Ответ написан
    Комментировать
  • Как соединить два массива и вычесть одинаковые элементы?

    @PavelMos
    Проверка на то, что дубли могут быть и в первом, и во втором списке нужна ? Если нужна, нужно делать две прохода:
    a=[1,2,3,4,4,4,1,1,3]
    b=[2,2,5,10,11,3,3]
    out1=[x for x in a if x not in b]
    print ('Из А отсеяно то, что дублируется в  Б', out1)
    out2=[x for x in b if x not in a]
    print ('Из Б отсеяно то, что  дублируется в А', out2)
    print ('Итого',out1+out2)
    Из А отсеяны дубликаты из Б [1, 4, 4, 4, 1, 1]
    Из Б отсеяны дубликаты из А [5, 10, 11]
    Итого [1, 4, 4, 4, 1, 1, 5, 10, 11]
    Ответ написан
    Комментировать
  • Как исправить ошибку 'NoneType' object has no attribute 'chat'?

    @PavelMos
    у объекта message должен быть аттрибут chat, но объект пустой. Проблема или в предыдущем коде, или нужна проверка и заполнение какими-то значениями по умолчанию.
    Ответ написан
  • Как засчитать зацикленность и остановить в таких случаях выполнение кода?

    @PavelMos
    Вставить счётчик перед началом while, в while увеличивать его на 1 и проверять таким образом кол-во циклов на превышение числа повторений
    Ответ написан
    1 комментарий
  • IndexError: list index out of range я не могу разобраться как это исправить. Как исправить?

    @PavelMos
    Компилятор же указывает, что проблема в
    voices, в котором данные от speak_engine.getProperty('voices')
    Можно напрямую посмотреть, что в нём, например:
    voices = speak_engine.getProperty('voices')
    print (voices)
    Ответ написан
  • Как настроить подключение?

    @PavelMos
    Если в базе нет пароля, зачем вводить пароль root ? Или в базе тогда уж пароль root прописать и передавать его через скрипт.
    Ответ написан
    Комментировать
  • Как достать значение с помощью регулярных выражений?

    @PavelMos
    (\'.*\')
    отражающие символы перед кавычками, точка - любой символ, * - брать следующие символы бесконечно, ( ) - каждое найденное сочетание будет сохранено отдельным результатом.

    Если формат строки известен - начинается с #,затем 6 символов из букв и цифр, то имхо проще и понятней искать это сочетание
    (#[a-zA-Z0-9]{6})
    # первый символ
    [a-zA-Z0-9] диапазоны символов - строчные, прописные латиница + цифры
    {6} - брать то где ровно 6 символов
    ( ) - каждое найденное сочетание будет отдельным результатом

    Для питона можно регекспы пробовать тут:
    https://pythex.org/
    Ответ написан
    Комментировать
  • Как разделить данные в строке Pandas?

    @PavelMos
    Имхо целесообразнее сделать атрибуты вроде "являяется ли комедией ? да/нет (1/0)", для этого ввести доп. столбцы. Если дублировать строки, то также сильно увеличится размер датафрейма.

    import pandas
    df1=pandas.DataFrame.from_records((
        (1, 'xxx', 'Adv|Ani|Doc'),
        (2, 'yyy', 'Adv|Doc'),
        (3, 'zzz', 'Comedy|Doc')),
    columns=['movieId','title','genres'])
    genres_list=('Adv','Ani','Doc','Comedy')
    for i in genres_list:
        df1[i]=[0]*len(df1) #сначала прописать всем нули
    print (df1)
    for idx, row in df1.iterrows():
        c=(row[2])
        l=c.split('|')
        for g in genres_list:
            if g in l:
                df1.loc[idx, g]=1
    print (df1)
       movieId title       genres  Adv  Ani  Doc  Comedy
    0        1   xxx  Adv|Ani|Doc    0    0    0       0
    1        2   yyy      Adv|Doc    0    0    0       0
    2        3   zzz   Comedy|Doc    0    0    0       0
       movieId title       genres  Adv  Ani  Doc  Comedy
    0        1   xxx  Adv|Ani|Doc    1    1    1       0
    1        2   yyy      Adv|Doc    1    0    1       0
    2        3   zzz   Comedy|Doc    0    0    1       1
    Ответ написан
    Комментировать
  • Как сохранить данные в словаре python?

    @PavelMos
    Сохранить данные в словаре значит
    1) создать новый элемент словаря:
    slovar={}
    slovar[a]='b'
    или
    2)изменить существующий элемент
    slovar={1:'a',2:'b'}
    slovar[1]='z'

    в примере в вопросе как раз функция создаёт и возвращает словарь
    Ответ написан
    Комментировать
  • Как скопировать часть одного документа docx в другой из Python?

    @PavelMos
    Если именно из файла, то, скорей всего, напрямую никак. Только разархивировать .DOCX и вручную искать в соответствующих файлах содержимое , описывающими текст в начале и в конце фразы. по словам и тегам. Но не факт, что скопированный текст можно будет сохранить как валидный DOCX, потому что в DOCX очень сложная структура. То есть нужно будет еще много чего дополнительно создать, прежде чем запаковать это в DOCX.

    Думаю, это лучше делать встроенными вордовскими средствами.
    Ответ написан
    Комментировать
  • Python. Как извлечь все данные вложенных словарей, имеющих одну общую пару ключ: значение?

    @PavelMos
    Перебрать элементы первого уровня через for i in dict, в нём проверить через dict1[i].keys() наличие ключа __typename, если такой ключ существует, проверить его значение.

    import pprint
    pprint.pprint (dict1)
    for i in dict1:
        if '__typename' in dict1[i].keys():
            if dict1[i]['__typename']=='Person':
                print ('Match on: ',i)
                print (dict1[i])


    Если __typename: Person будет в элементах другого уровня, скрипт нужно переделывать, например, сначала выяснить максимальную вложенность элемента и затем проверять по всем уровням
    Ответ написан
    Комментировать
  • Яндекс практикум Цикл?

    @PavelMos
    Unexpected indent - отступы неправильные, в Питоне во вложенных конструкциях, в т.ч. в циклах, каждая строка с новой командой должна начинаться с соотв. отступом. Каждый уровень вложенности - дополнительный отступ.
    print ('a') //основная часть программы - нет отступа
    for x in range (1,10): // основная часть программы - нет отступа
        print ('b')   // вложенная  конструкция - отступ
        print ('c')  // вложенная конструкция - отступ
        for j in range (1,5):  // вложенная конструкция -  отступ
            print ('e')  // конструкция, вложенная во вложенную конструкцию -  два отступа
    Ответ написан
    Комментировать
  • Валидация int, str, float?

    @PavelMos
    Есть функции isint, isnumeric, isalpha и тд. На русском тут
    https://pythonworld.ru/tipy-dannyx-v-python/stroki...
    Ответ написан
    Комментировать