• 検索結果がありません。

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション ( " ) で囲うか シングルクオーテーション ( ' ) で囲う PYTHON3 "

N/A
N/A
Protected

Academic year: 2021

シェア "PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション ( " ) で囲うか シングルクオーテーション ( ' ) で囲う PYTHON3 ""

Copied!
5
0
0

読み込み中.... (全文を見る)

全文

(1)

■ 文字列 ■ ■ 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが、基本的な方法は下記の 2 種で有る。対象と成る文 字の集まりをダブルクオーテーション( " )で囲うか、シングルクオーテーション( ' )で囲う。 PYTHON3 "文字列" '文字列' 他のプログラミング言語ではダブルクオーテーションとシングルクオーテーションで囲う場合では、エ スケープ処理等の扱いが異なる物が多いが、Python では孰れも全く同じで有る。 ■ 文字列の標準出力への出力 print 関数は引数に指定されたオブジェクトを標準出力に出力する。 print 関数は引数の出力の後、自動的に改行(¥n)を追加して出力する。猶、引数の最後がカンマ( , ) で終わって居る場合は改行が出力されない。 複数の引数を指定する場合は、カンマ( , )で区切って複数の引数を記述する。此の場合、2 個目の引 数からは頭に空白が 1 個付加されて出力される。従って、カンマで区切って出力する場合は、此の様に 空白が 1 個含まれて了うので、空白を入れたくない場合は、出力する文字列を連結してから出力する。 print 関数の引数に文字列以外を指定した場合には、先ず文字列に変換してから出力が行われる。 ■ エスケープシーケンス Python ではダブルクオーテーションで囲った文字列でもシングルクオーテーションで囲った文字列で もエスケープシーケンスを使用する事が出来る。使用出来るエスケープシーケンスは、下記の通りで有 る。 エスケープシーケンス 意味 ¥¥ 「¥」文字そのもの ¥' シングルクオーテーション ¥" ダブルクオーテーション ¥a ベル ¥b バックスペース ¥f 改ページ ¥r キャリッジリターン ¥n 改行 ¥t 水平タブ ¥v 垂直タブ

¥N{name} Unicode データベース中で名前 name を持つ文字 ¥uxxxx 16 ビットの 16 進数値 xxxx を持つ Unicode 文字 ¥Uxxxxxxxx 32 ビットの 16 進数値 xxxxxxxx を持つ Unicode 文字

P

(2)

¥ooo 8 進数 ooo を持つ ASCII 文字 ¥xhh 16 進数 hh を持つ ASCII 文字 ¥0 NULL ¥+(改行) 文字列を途中で改行する(行継続記号) 長い文字列の場合に、下記の様にプログラム中で改行するとエラーと成る。 PYTHON3

"The browser displays an error message"

上記の様な場合には、下記の様に改行の直前に¥を入力する。 PYTHON3

"The browser displays an ¥ error message"

¥の直後に改行が有る場合には、行が次の行へ続いて居る事を表すので、上記は下記の様に 1 行で記述 された場合と同じ扱いに成る。

PYTHON3

"The browser displays an error message" ■ トリプルクオーテーション 文字列を作成する方法として、下記の様にシングルクオーテーション( ' )かダブルクオーテーション ( " )を 3 個続けた物で文字列を囲う方法が有る。此の場合、複数行の文字列を作成する事が出来る。 PYTHON3 """1 行目文字列 2 行目文字列 3 行目文字列""" '''1 行目文字列 2 行目文字列 3 行目文字列''' 此の場合、プログラム中で改行されて居る箇所は、改行文字で有る¥n が入力されて居ると看做される。 例えば下記の様に使用する。 PYTHON3 print("""<html> <head> <title>Test</title> </head> <body> <p>Test Page</p> </body> </html>""") 猶、此の形式の場合には、文字列の中で単独のダブルクオーテーションやシングルクオーテーションを 使う時にエスケープシーケンスは必要無い(エスケープシーケンスを使用しても問題は無い)。

(3)

■ raw 文字列 raw 文字列を使用する事でエスケープシーケンスを無効にする事が出来る。raw 文字列は下記の様に通 常の文字列の先頭に r 又は R を付けた物で有る。 PYTHON3 r"文字列" r'文字列' R"文字列" R'文字列' raw 文字列は、ファイルのパスの様な¥記号を多く含む文字列を作成する場合に便利で有る。 PYTHON3 r"C:¥My Document¥node¥track¥test.txt" 猶、raw 文字列でも、ダブルクオーテーションで囲った文字列の中にダブルクオーテーションを含める 場合は ¥" とする必要が有る。亦、シングルクオーテーションの場合も同様に ¥' とする。 ■ バイト列と文字列 バイト列は特定のエンコード方式でエンコードされて居り、リテラルでは b'a' の様に表現する。一方、 文字列は Unicode のコードポイントを並べた物で有り、リテラルでは 'あいう' の様に表現する。 PYTHON3 b"squid" # バイト列 b'squid' # バイト列 "烏賊" # 文字列 '烏賊' # 文字列

※ Python3 のバイト列は、Python2 のバイト文字列と扱いが似て居るが、Python2 のバイト文字列は 文字列で有るが、Python3 のバイト列は文字列ではない全く別の型で有る。 ※ Python3 の文字列と Python2 のユニコード文字列は同等と考えて良い。リテラル表記に違いが有り、 u を文字列の前につけなくてはならなかった Python2 のユニコード文字列に対して Python3 の文字 列は其れが不要で有る。 猶、バイト列は、非 ASCII 文字を含む場合、リテラル表記が使えないので、文字列を特定のエンコード 方式でエンコードする必要が有る。 PYTHON3 print(b"烏賊") # SyntaxError print("烏賊") # 烏賊 print(b"¥xe7¥x83¥x8f¥xe8¥xb3¥x8a".decode('utf-8')) # 烏賊 print("烏賊") # 烏賊 因みに、非 ASCII 文字の文字コードは、下記の様にして取得する事が出来る。 PYTHON3 print("烏賊".encode('utf-8')) # b'¥xe7¥x83¥x8f¥xe8¥xb3¥x8a'

(4)

両者を type 関数で確認すると、バイト列は bytes 型で有り、文字列は str 型で有る事が解る。 PYTHON3

print(type(b"a")) # <class 'bytes'> print(type("a")) # <class 'str'> 前述の様に、Python3 のバイト列は文字列ではない。其の為、文字列と連結不可能で有るし、サポート して居るメソッドも異なる。両者の標準出力の例を、下記に示す(文字列は sys.stdout に、バイト列は sys.stdout.buffer に書き込む)。 PYTHON3 import sys sys.stdout.write('あ' + 'いう' + '¥n') sys.stdout.buffer.write(('あ' + 'いう' + '¥n').encode('utf-8')) 文字列は文字を Unicode として扱い、日本語の様な全角文字でも、アルファベットの様な ASCII 文字 でも、1 文字を 1 文字として扱う。バイト列がバイト単位なのに対して Unicode 文字列では文字単位で 処理を行う事が出来る。其の為、通常、Python で日本語を取り扱う場合は文字列を使用する。 ■ 文字列の連結 文字列の連結には、下記の様に+演算子を使用する。 PYTHON3

print("Python" + "3.7") # print("Python " + b"3.7".decode('utf-8')) print("西暦" + "2000 年") 文字列とバイト列の連結は出来ない(TypeError が発生する)。バイト列を文字列と連結するには、一 旦バイト列をデコードして文字列に変換する必要が有る。 ■ 文字列の繰り返し 文字列の繰り返しには、下記の様に*演算子を使用する。*演算子は、*演算子の左辺の文字列を右辺に 指定した数値だけ繰り返した新しい文字列を返す。 PYTHON3 print("-" * 40) print("~" * 20) ■ 文字列の長さ 文字列の長さを取得するには、下記の様に len 関数を使用する。通常の文字列の場合はバイト数、 Unicode 文字列の場合は文字数を取得する。 PYTHON3 print(len("squid")) # 5 print(len("烏賊")) # 2

(5)

■ 数値を文字列に変換 文字列以外の数値等のオブジェクトを文字列に変換するには、下記の様に str 関数を使用する。 PYTHON3 print("Year" + str(2000)) print("円周率" + str(3.14159)) ■ インデックスを指定して要素を取得 文字列を構成する個々の要素は、先頭から順に割り当てられたインデックス番号を指定する事で、個別 に取得する事が可能で有る(要素番号は、0 から順に番号が割り当てられるが、負の値を指定する事も 可能で、-1 なら一番最後の要素、-2 なら最後から二番目の要素と成る)。 PYTHON3 str = "Hello" print(str[0]) # H print(str[1]) # e print(str[2]) # l print(str[3]) # l print(str[4]) # o 非 ASCII 文字を含む文字列も同じ様にインデックスを指定して要素を取得する事が出来る。文字列では 個々の要素は文字単位なので、要素も文字単位と成る。 PYTHON3 str = "烏賊の王様" print(str[0]) # 烏 print(str[1]) # 賊 print(str[2]) # の print(str[3]) # 王 print(str[4]) # 様 ■ 部分文字列の取得 部分文字列を取得するには、下記の様にスライス機能を使用する。 PYTHON3 str = "ABCDE" print(str[1:3]) # "BC" print(str[1:-1]) # "BCD" スライス機能の書式は、下記の通りで有る。 文字列オブジェクト[ 開始インデックス : 終了インデックス ] 終了インデックスを省略すると最後の文字の次のインデックスが指定された事に成り、結果的に開始イ ンデックスから最後の文字迄が抽出される。 亦、開始インデックスを省略すると最初の文字の前のインデックスが指定された事に成り、結果的に先 頭の文字から終了インデックスの前の文字迄が抽出される。

参照

関連したドキュメント

文字を読むことに慣れていない小学校低学年 の学習者にとって,文字情報のみから物語世界

うことが出来ると思う。それは解釈問題は,文の前後の文脈から判浙して何んとか解決出 来るが,

「文字詞」の定義というわけにはゆかないとこ ろがあるわけである。いま,仮りに上記の如く

始めに山崎庸一郎訳(2005)では中学校で学ぶ常用漢字が149字あり、そのうちの2%しかル

  「教育とは,発達しつつある個人のなかに  主観的な文化を展開させようとする文化活動

噸狂歌の本質に基く視点としては小それが短歌形式をとる韻文であることが第一であるP三十一文字(原則として音節と対応する)を基本としへ内部が五七・五七七という文字(音節)数を持つ定形詩である。そ

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

名      称 図 記 号 文字記号