0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【ChatGPT】構造化プログラミング式プロンプトの追記(フィルター編)

Last updated at Posted at 2023-06-15

本記事は、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)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?