如何在Python中匹配字符串开头或结尾的文本?

如何在Python中匹配字符串开头或结尾的文本?

阅读更多:Python 教程

问题。

假设您需要检查特定文本模式的字符串开头或结尾。常见的模式可能是文件名扩展名,但也可以是任何内容。我将向您展示如何使用几种方法来完成此操作。

startswith()方法

检查字符串开始的简单方法是使用startswith()方法。

示例

text = "美国比澳大利亚冷吗?"
print(f"output \n {text.startswith('Is')}")

输出

True

示例

filename = "Hello_world.txt"
print(f"output \n {filename.startswith('Hello')}")

输出

True

示例

site_url = 'https://www.something.com'
print(f"output \n {site_url.startswith('http:')}")

输出

False

示例

print(f"output \n {site_url.startswith('https:')}")

输出

True

endswith()方法

检查字符串结尾的简单方法是使用endswith()方法。

示例

text = "美国比澳大利亚冷吗?"
print(f"output \n {text.endswith('?')}")

输出

True

示例

filename = "Hello_world.txt"
print(f"output \n {filename.endswith('.txt')}")

输出

True

现在,如果我们要使用上述方法检查多个选择,我们需要提供元组。其中一种常见用法是检查目录中的“.txt”和“.csv”文件。

import os
filenames = os.listdir('.')

# 首先检查是否存在文件
print(f"output \n {any(name.endswith(('.csv',',txt')) for name in filenames)}")

输出

True

输出

[name for name in filenames if name.endswith(('.csv', '.txt')) ]

输出

['file1.csv',
'HRDataset.csv',
'Input.csv',
'input.txt',
'input_copy.txt',
'movies_data.csv',
'my_html_data_to_csv.csv',
'temporary_file1_for_zip.csv',
'temporary_file2_for_zip.csv',
'test.csv',
'test1.txt',
'test2.txt',
'tmdb_5000_movies.csv']

请注意,这些方法接受元组。如果您有要搜索的选择列表,则需要将它们转换为元组。

import os

# 文件扩展名列表
patters = ['.csv','.txt']

# 获取文件名
filenames = os.listdir('.')

# 首先检查是否存在文件
any(name.endswith(patters) for name in filenames)

输出

---------------------------------------------------------------------------
TypeError Traceback (most recent call last):
in
8
9 # 首先检查是否存在文件
---> 10 any(name.endswith(patters) for name in filenames)

in (.0)
8
9 # 首先检查是否存在文件
---> 10 any(name.endswith(patters) for name in filenames)

TypeError: endswith first arg must be str or a tuple of str, not list

上面的命令返回了一个错误,因此我们需要将列表转换为元组。

示例

# 首先检查是否存在文件
any(name.endswith(tuple(patters)) for name in filenames)

输出

True

同样地,我们需要将列表转换为元组以获取文件名。

示例

[name for name in filenames if name.endswith(tuple(patters)) ]

输出

['file1.csv',
'HRDataset.csv',
'Input.csv',
'input.txt',
'input_copy.txt',
'movies_data.csv',
'my_html_data_to_csv.csv',
'temporary_file1_for_zip.csv',
'temporary_file2_for_zip.csv',
'test.csv',
'test1.txt',
'test2.txt',
'tmdb_5000_movies.csv']

最后,startswith() 和 endswith() 方法与其他操作结合使用时,看起来非常好,比如常见的数据缩减。例如:

例子

if any(name.endswith(tuple(patters)) for name in filenames):
<执行逻辑>

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程