本記事は、ChatGPT(無料版)で
行なっております。GPT4での確認
はできておりません。あしからず。
どうも、カーブミラーです。
今回は、
まず、記述ミスがありましたので
報告させてください。
【ChatGPTとすべてのProgrammerに捧ぐ】構造化プログラミング式プロンプト作成術
で、記述ミスがありましたので、
訂正させてください。
制御の終わりには、
「制御文end」です。
カッコ閉じですね。
と書きましたが、間違えました。
正しくは、
制御の終わりには、
「end制御文」です。
カッコ閉じですね。
です。
すでに、
さきの記事は修整済です。
ご迷惑お掛けいたしました。
では、
記述しなかった事柄を記述します。
フィルターです。
おおもとのjinja2には、
たくさんのフィルターがありますが、
ChatGPTさんが理解できる、
という制約がありますので、
ここでは、とりあえず、
文字列操作とリストの
フィルターを記述します。
教えてくれたのが、
この2種類なので。
以下に
フィルターの説明と
サンプルコードを示します。
まずは、文字列操作フィルター。
→「{{ message | length }}」
とmessageの長さを求めた
コードをチラッと書きました。
「|」は、「パイプ」と
呼ばれるものです。
lengthはダメとはいえ、
注意すれば、使えます。
1. `capitalize`:
文字列の最初の文字を大文字に変換します。
{% set text = "hello" %}
{{ text | capitalize }}
出力結果: "Hello"
2. `lower`:
文字列をすべて小文字に変換します。
{% set text = "HELLO" %}
{{ text | lower }}
出力結果: "hello"
3. `upper`:
文字列をすべて大文字に変換します。
{% set text = "hello" %}
{{ text | upper }}
出力結果: "HELLO"
4. `title`:
文字列内の各単語の最初の文字を大文字に変換します。
{% set text = "hello world" %}
{{ text | title }}
出力結果: "Hello World"
5. `length`:
文字列(ダメ)やリストなどの要素の数や長さを返します。
{% set names = ['John', 'Jane', 'Bob'] %}
{{ names | length }}
出力結果: 3
6. `default`:
変数が存在しない場合にデフォルトの値を設定します。
{% set username = None %}
{{ username | default("Guest") }}
出力結果: "Guest" (usernameが存在しない場合にデフォルトの値を表示)
7. `join`:
リストの要素を指定した文字列で結合します。
{% set fruits = ['apple', 'banana', 'orange'] %}
{{ fruits | join(", ") }}
出力結果: "apple, banana, orange"
8. `replace`:
文字列内の指定した部分文字列を別の文字列に置換します。
{% set text = "Hello, World!" %}
{{ text | replace("Hello", "Hi") }}
出力結果: "Hi, World!"
9. `truncate`:
文字列を指定した長さに切り詰めます。
{% set text = "This is a long text that needs to be truncated." %}
{{ text | truncate(20) }}
出力結果: "This is a long text..."
10. `date`:
日付や時刻を指定した形式で表示します。
{% set current_date = now() %}
{{ current_date | date("Y年m月d日 H:i") }}
出力結果: "2023年06月11日 13:45"
次は、配列(リスト)のフィルター
reverse
リストの要素を逆順にする 。
{% set numbers = [1, 2, 3, 4, 5] %}
{{ numbers | reverse }}
出力結果: [5, 4, 3, 2, 1]
select
特定の条件を満たす要素のみをフィルタリングする。
{% set numbers = [1, 2, 3, 4, 5] %}
{{ numbers | select('even') }}
出力結果: [2, 4]
sum
リストの要素を合計する。
{% set numbers = [1, 2, 3, 4, 5] %}
{{ numbers | sum }}
出力結果: 15
unique
リスト内の要素を重複なしで取得する。
{% set numbers = [1, 2, 2, 3, 3, 4, 5] %}
{{ numbers | unique }}
出力結果: [1, 2, 3, 4, 5]
reject
特定の条件を満たさない要素のみをフィルタリングする。
{% set numbers = [1, 2, 3, 4, 5] %}
{{ numbers | reject('odd') }}
出力結果: [2, 4]
sort
リストの要素を順序付ける。
{% set numbers = [3, 1, 4, 2, 5] %}
{{ numbers | sort }}
出力結果: [1, 2, 3, 4, 5]
slice
リストの要素を一部取得する。
{% set numbers = [1, 2, 3, 4, 5] %}
{{ numbers | slice(1, 3) }}
出力結果: [2, 3, 4]
random
リストの要素を指定した数だけランダムに取得する。
{% set numbers = [1, 2, 3, 4, 5] %}
{{ numbers | random(3) }}
出力結果: ランダムな結果(例: [2, 3, 1])
map
リストの要素を特定の条件に基づいてマッピングする。
{% set numbers = [1, 2, 3, 4, 5] %}
{{ numbers | map('double') }}
出力結果: [2, 4, 6, 8, 10]
フィルターもサンプルも
ChatGPTさんからの
ご提供です。
感謝!
多少、手を加えました。
フォーマットが
違うのは、そのためです。
だって、別々に出すんだもん。
なお、英語版ですが、
詳細は、
jinjaのドキュメント参照してね。
Template Designer Documentation — Jinja Documentation (3.1.x)