Python-字符串開頭或結尾匹配


 

startswith()endswith() 方法提供了一個非常方便的方式去做字符串開頭和結尾的檢查。

1、查看指定目錄下的所有文件名

>>> import os
>>> filenames = os.listdir('I:\PythonTest')
>>> filenames
['111.csv', '111.xlsx', '111.xml', '123.txt', '123.xlsx', '123123.xml', '123123.xml.bak', '1234.txt', '222.xml', 'book.xml', 'book.xml.bak', 'excelWrite.csv', 'excelWrite.xlsx', 'Koala.jpg', 'movie.xml', 'movie.xml.bak', 'movies.xml', 'receive.txt', 'user.xml', 'user.xml.bak', '新建文件夾']

 

2、列出.txt文件名

>>> for i in filenames:
    if i.endswith('.txt'):
        print(i)

        
123.txt
1234.txt
receive.txt

另外一種寫法:

>>> i for i in filenames if i.endswith('.txt')
SyntaxError: invalid syntax
>>> [i for i in filenames if i.endswith('.txt')] #結果返回一個list[]
['123.txt', '1234.txt', 'receive.txt']
>>> a = [i for i in filenames if i.endswith('.txt')]
>>> print(a)
['123.txt', '1234.txt', 'receive.txt']

3、同時列出.txt和.xml文件

如果你想檢查多種匹配可能,只需要將所有的匹配項放入到一個元組(‘a’,’b’,’c’)中去, 然后傳給startswith() 或者 endswith() 方法

>>> for i in filenames:
    if i.endswith(('.txt','.xml')):
        print(i)

        
111.xml
123.txt
123123.xml
1234.txt
222.xml
book.xml
movie.xml
movies.xml
receive.txt
user.xml
>>> [i for i in filenames if i.endswith(('.txt','.xml'))]
['111.xml', '123.txt', '123123.xml', '1234.txt', '222.xml', 'book.xml', 'movie.xml', 'movies.xml', 'receive.txt', 'user.xml']

4、列出開頭為book和1的文件名

>>> [i for i in filenames if i.startswith(('book','1'))]
['111.csv', '111.xlsx', '111.xml', '123.txt', '123.xlsx', '123123.xml', '123123.xml.bak', '1234.txt', 'book.xml', 'book.xml.bak']

5、查看是否存在xml的文件

檢查某個文件夾中是否存在指定的文件類型:

if any(name.endswith(('.c', '.h')) for name in listdir(dirname)):
>>> any(name.endswith('.xml') for name in filenames)
True

參考資料:http://python3-cookbook.readthedocs.org/zh_CN/latest/c02/p02_match_text_at_start_end.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM