Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文字列の最初または最後のテキストを一致させる方法は?


問題..

特定のテキストパターンについて、文字列の開始または終了を確認する必要があると想定します。一般的なパターンはファイル名拡張子ですが、何でもかまいません。これを行う方法について、いくつかの方法を紹介します。

Startswith()メソッド

文字列の先頭を確認する簡単な方法は、startswith()メソッドを使用することです。

text = "Is USA colder than Australia?"
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 = "Is USA colder than Australia?"
print(f"output \n {text.endswith('?')}")

出力

True

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

出力

True

上記の方法で複数の選択肢を確認したい場合は、タプルを提供する必要があります。一般的な使用法の1つは、ファイル拡張子のチェックです。ディレクトリ内の「.txt」ファイルと「.csv」ファイルを検証する必要があるとしましょう。

import os
filenames = os.listdir('.')
# Let us first check if there are files
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

# list with choices
patters = ['.csv','.txt']

# get the file names
filenames = os.listdir('.')

# Let us first check if there are files
any(name.endswith(patters) for name in filenames)

出力

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in
8
9 # Let us first check if there are files
---> 10 any(name.endswith(patters) for name in filenames)

in (.0)
8
9 # Let us first check if there are files
---> 10 any(name.endswith(patters) for name in filenames)

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

上記のコマンドはエラーを返したので、リストをタプルに変換する必要があります。

# Let us first check if there are files
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):
<perform the logic here>

  1. Java RegExを使用して入力の終わりを一致させる方法は?

    メタ文字「\\z」を使用して、入力の終わりに一致させることができます。 例 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example {    public static void main(String args[]) {       //Reading String from user       System.out.println("E

  2. Pythonでキーボードからコピーしたテキストを貼り付けるにはどうすればよいですか?

    Pythonには、さまざまなPythonアプリケーションの開発で追加機能を実装する方法を提供する多くの組み込みライブラリとモジュールが用意されています。 パイパークリップ は、Pythonアプリケーションでコピーアンドペースト操作を実装するためのクロスプラットフォームのPythonモジュールの1つです。 Pythonアプリケーションで使用するには、次のコマンドを使用してインストールする必要があります。 pip install pyperclip クリップボードからテキストをコピーして画面に表示するアプリケーションを開発することで、実用的なユースケースを実装できます。さらに、コピーしたテキスト