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]
выполнит трюк). Но это означало бы, что точки не могут быть помещены нигде в имени файла, потому что первая точка теперь ограничивает расширение.
Будьте осторожны!
JSF является спецификацией. Таким образом необходимо использовать реализацию, такую как та, обеспеченная Sun или тем, обеспеченным Apache (MyFaces).
IceFaces не реализация, но библиотека компонентов. Другие библиотеки существуют, такие как RichFaces, Томагавк MyFaces, и так далее.
можно взглянуть здесь для различий между библиотеками компонентов.
RichFaces разрабатывается Jboss под Redhat.
богатство Компонента: Партии хороших ajax функций и компонентов UI.
Простота для разработки: Субъективный, но я говорю да.
Популярность: v3.3.0 имеет приблизительно 13 000 загрузок
Устойчивость: Все еще в активной разработке с добавленными новыми опциями. Система на месте для Отслеживание ошибок .
общественная поддержка: Имеет хорошее онлайн демонстрация с примерами кода (тот на веб-сайте Jboss, который необходимо войти в систему для получения к). Существует форум и wiki на сайте Jboss.
Я второй RichFaces. Много хорошей документации на exadel страницах (которые Mark связанный также), и также очень хорошее Руководство разработчика на каждом компоненте. Ползунки для базового JSF + Richfaces (которые также имеют большую хорошую поддержку Ajax).
Если вы используете Sun RI или MyFaces, особой разницы нет. Оба реализуют то, что определяет стандарт JSF.
Для библиотек компонентов вы должны взглянуть на:
Они важны. Вудсток мертв, и ребята из ICEfaces предлагают путь миграции. Если вы уже работаете с инструментами Oracle (например, JDeveloper), Тринидад - хороший кандидат для начала. Если вы уже работаете с инструментами JBoss, RichFaces - хороший кандидат для начала.
Для более независимого использования взгляните на Tomahawk и ICEfaces. ICEfaces позволяет интегрировать компоненты Tomahawk, хотя скиннинг не совсем совместим. Интеграция - одна из ключевых особенностей ICEfaces. Поддержка IDE, серверов приложений и других фреймворков с открытым исходным кодом великолепна. Интеграция Facelets - лучшее, что вы можете получить. Технология AJAX push - лучшая реализация Push на данный момент. Многое из JSF 2.0 уже является частью ICEfaces 1.8.
Вот еще немного, почему мы предпочитаем ICEfaces:
http://blog.rainer.eschen.name/2008/09/22/icy-faces -for-more-than-year /
Для ознакомления с JSF смотрите здесь:
http://blog.rainer.eschen.name/2008/03/10/how-to-start-the -jsf-dance /
Подсказка: в конце 2008 года Packt Publishing попросили меня написать книгу об ICEfaces. Он будет доступен в конце октября 2009 года. Зная это, ответ может быть несколько предвзятым. Но, это результат длительного тестирования и более чем 1,5-летнего опыта работы с ICEfaces. Это лучшее, что вы можете получить в технологиях. Я протестировал все важные реализации JSF с открытым исходным кодом, прежде чем наш проект окончательно выбрал ICEfaces.