using .split для разбора имени файла [duplicate]

Я решил эту проблему, выполнив следующие действия:

  1. Добавить default_authentication_plugin = mysql_native_password в раздел [mysqld] my.cnf
  2. Введите mysql и создайте нового пользователя сделав что-то вроде CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
  3. При необходимости предоставите привилегии. Например. GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost';, а затем FLUSH PRIVILEGES;
  4. Войдите в phpmyadmin с новым пользователем
3
задан Scott A 21 November 2015 в 00:58
поделиться

4 ответа

from os.path import splitext

list1 = ['image1.png', 'image2.png', 'image3.png', 'image3.png', 'image4.png', 'image3.jpg']
list2 = ['image1.pdf', 'image2.eps', 'image3.ps', 'image5.doc']

# Create a lookup set of the document names sans extensions.
documents = set([splitext(filename)[0] for filename in list2])

# Compare each stripped filename in list1 to the list of stripped document filenames.
matches = [filename for filename in set(list1) if splitext(filename)[0] in documents]

print matches

Выход:

['image1.png', 'image2.png', 'image3.png', 'image3.jpg']

Обратите внимание, что при необходимости его нужно будет адаптировать для файлов с несколькими расширениями, например .tar.gz (filename.partition(".")[0] выполнит трюк). Но это означало бы, что точки не могут быть помещены нигде в имени файла, потому что первая точка теперь ограничивает расширение.

4
ответ дан Jean-François Fabre 28 August 2018 в 00:16
поделиться

Используйте понимание списка с помощью set:

list1 = ["image1.png", "image2.png", "image3.png", "image3.png"]
list2 = ["image1.pdf", "image2.eps", "image3.ps"]

print [x for x in set(list1) for y in set(list2) if x.split('.')[0] == y.split('.')[0]]

Выход:

['image1.png', 'image2.png', 'image3.png']
1
ответ дан Andrés Pérez-Albela H. 28 August 2018 в 00:16
поделиться
def filename(name):
    return name.split('.')[0]

list2_filenames = [filename(name) for name in list2]
found_filenames = [name for name in list1 if filename(name) in list2_filenames] 
0
ответ дан kadrian 28 August 2018 в 00:16
поделиться

Вы можете попробовать использовать set для получения уникальности и понимания списка для сравнения:

from os.path import splitext

list1 = ['image1.png', 'image2.png', 'image3.png', 'image3.png']
list2 = ['image1.pdf', 'image2.eps', 'image3.ps']
reference = set([splittext(item)[0] for item in list2]) #  Strip the extension
outcome = set([item for item in list1 if splittext(item)[0] in reference]) #  compare
print(outcome)
>>> 
{'image3.png', 'image2.png', 'image1.png'}
1
ответ дан Sebastian Wozny 28 August 2018 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: