atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
Intro to Python
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
Intro to Python
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
Intro to Python
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • Intro to Python
  • 文字と文字列の編集履歴ソース
「文字と文字列」の編集履歴(バックアップ)一覧に戻る

文字と文字列 - (2025/02/20 (木) 21:54:45) のソース

* 目次

#contents

* 基本操作

** 文字列の長さを調べる

len関数を使う。

#highlight(){{
>>> len('ABC')
3
>>> len('あい')
2
>>> len('阿伊宇ab')
5
}}

** 文字列を連結する

~+演算子を使う。

#highlight(){{
>>> s = 'a' + 'bc' + 'def'
>>> print(s)
abcdef
}}

** 文字列の指定した一部を取り出す

スライス演算子を使う。インデックスの開始は0である。取り出す範囲の指定は、開始のインデックスは、取り出すその文字のインデックスを、終わりのインデックスは、取り出す文字の次のインデックスを指定することに注意。

#highlight(){{
>>> s = "ABC123あいう"
>>> s[0]
'A'
>>> s[1]
'B'
>>> s[0:3]
'ABC'
>>> s[5:8]
'3あい'
>>> s[5:]
'3あいう'
>>> s[:4]
'ABC1'
}}

** 文字列の前後の空白を取り除く

strip関数、lstrip関数、rstrip関数を使う。それぞれ、前後、前だけ、後ろだけの空白(0x20)を削除した文字列を返す。

#highlight(){{
>>> s = ' AB C  DE  '
>>> s
' AB C  DE  '
>>> s.strip()
'AB C  DE'
>>> s.lstrip()
'AB C  DE  '
>>> s.rstrip()
' AB C  DE'
}}

** 文字列を特定の文字または文字列で分割する

reモジュールのsplit関数を使う。2番目の例のとおり、正規表現を使って分割の条件を指定することができる。

#highlight(){{
>>> import re
>>> s = '石見舞菜香,鈴木みのり , 野口瑠璃子, 安野希世乃 ,和多田美咲'
>>> re.split(',', s)
['石見舞菜香', '鈴木みのり ', ' 野口瑠璃子', ' 安野希世乃 ', '和多田美咲']
>>> re.split('[ ,]+', s)
['石見舞菜香', '鈴木みのり', '野口瑠璃子', '安野希世乃', '和多田美咲']
}}

** 文字列を数値に変換する

整数の場合はint関数、小数の場合はfloat関数を使用する。

#highlight(){{
>>> int('1')
1
>>> int('1') + int(' 20 ')
21
>>> int('0.1')
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '0.1'
>>> float('0.1')
0.1
>>> float('0.1') + float(' 1.5 ')
1.6
}}

int関数もfloat関数も、引数に指定した文字列に空白が含まれていてもかまわない。int関数に小数を指定すると、エラーが発生する。

** 文字の文字コードを簡単に調べる

encodeメソッドを使用する。以下は、文字列「あい亜井」のそれぞれの文字の文字コードを調べた例。なお、これら文字の文字コード(左から、文字、その文字のシフトJISコード、その文字のutf-8コード)は以下のとおり(0xは16進数であることを示す接頭語)。

#highlight(){{
あ 0x82A0 0xE38182
い 0x82A2 0xE38184
亜 0x889F 0xE4BA9C
井 0x88E4 0xE4BA95
}}

#highlight(){{
>>> s = "あい亜井"
>>> s.encode("sjis")
b'\x82\xa0\x82\xa2\x88\x9f\x88\xe4'
>>> s.encode("utf-8")
b'\xe3\x81\x82\xe3\x81\x84\xe4\xba\x9c\xe4\xba\x95'
}}

文字型変数を使用しなくても、文字列に直接使用することもできる。

#highlight(){{
>>> "あい亜井".encode("sjis")
b'\x82\xa0\x82\xa2\x88\x9f\x88\xe4'
}}

** raw文字列を使う

raw文字列とは、エスケープシーケンスを無効にして、表記のままに文字列を解釈する文字列リテラルのこと。文字列リテラルの先頭にrをつけて表記する。

#highlight(){{
>>> s = "a\nbc\ndef"
>>> print(s)
a
bc
def
>>> s = r"a\nbc\ndef"
>>> print(s)
a\nbc\ndef
}}

Windowsのパス区切り記号¥(円記号)は、普通の文字列リテラルでは「\\」(\を2つ)と表記する必要があるが、raw文字列を使うとそのまま書くことができる。

#highlight(){{
>>> s = "C:\\Windows\\System"
>>> print(s)
C:\Windows\System
>>> s = r"C:\Windows\System"
>>> print(s)
C:\Windows\System
}}

* 応用操作

** 同じ文字列が繰り返された文字列を作る

*演算子を使う。

#highlight(){{
>>> 'A' * 3
'AAA'
>>> 'Abc' * 4
'AbcAbcAbcAbc'
}}

** 指定した長さの空白(0x20)文字列を作る

文字列リテラルと*演算子を使う。

#highlight(){{
>>> s = ' ' * 7
>>> len(s)
7
>>> print('>' + s + '<')
>       <
}}

** 桁を変数で指定して書式化する

formatメソッドまたは整形済み文字列リテラル(f文字列)を使用する。以下は、数値1.23456789を小数点以下4桁で表示(1.2346、四捨五入の処理により1.2345にはならない)するために、小数点以下4桁の指定(.4f)を、変数で指定した例。

#highlight(){{
>>> d = 1.23456789
>>> n = 4
>>> print('{:.{}f}'.format(d, n))
1.2346
>>> print(f'{d:.{n}f}')
1.2346
}}

** 文字列のハッシュ値を得る

hashlibモジュールの関数を使う。関数はハッシュオブジェクトというハッシュ値を格納したオブジェクトを返すので、関数を指定して戻り値を決める。

#highlight(){{
>>> import hashlib
>>> s = "鈴木みのり"
>>> md5 = hashlib.md5(s.encode()).hexdigest()
>>> print(md5)
2cdcdf384125ac19c173e9517b23847b
>>> sha1 = hashlib.sha1(s.encode()).hexdigest()
>>> print(sha1)
728d6a009b1700f9759ed2b502a0f673820700d5
>>> sha256 = hashlib.sha256(s.encode()).hexdigest()
>>> print(sha256)
4a806bf1e967f0764841aabcb3e634316f4b19be1dc9244480cd2c26c315db2b
}}

** バイト列リテラルからbytes型変数を作成する

文字列リテラルの前に接頭辞bを付ければよい。ただし、接頭辞bでは日本語を服もバイト列リテラルを作成できない。bytes関数を使うことであらゆる文字からなるバイト列文字列を作成することができる。ただし文字コードを指定する必要がある。

バイト列リテラルはprint関数の出力では、接頭辞bが付く。最後の例のとおりにバイト列を文字列に変換する場合はdecodeメソッドを使う。

#highlight(){{
>>> s = 'Watada Misaki'
>>> by = b'Watada Misaki'
>>> print(s)
Watada Misaki
>>> print(by)
b'Watada Misaki'
>>> s = '和多田美咲'
>>> by = bytes('和多田美咲', 'utf-8')
>>> print(s)
和多田美咲
>>> print(by)
b'\xe5\x92\x8c\xe5\xa4\x9a\xe7\x94\xb0\xe7\xbe\x8e\xe5\x92\xb2'
>>> by = bytes('和多田美咲', 'Shift_JIS')
>>> print(by)
b'\x98a\x91\xbd\x93c\x94\xfc\x8d\xe7'
>>> print(by.decode('Shift_JIS'))
和多田美咲
}}

** 数値を文字列に変換する

formatメソッドかフォーマット済み文字列リテラルを使う。

#highlight(){{
>>> n = -1
>>> d1 = -2
>>> d2 = 3.4
>>> print("|{}|{}|{}|".format(n, d1, d2))
|-1|-2|3.4|
>>> print("|{2}|{1}|{0}|".format(n, d1, d2))
|3.4|-2|-1|
>>> print("|{0:6d}|{1:.3f}|{2:.4e}|".format(n, d1, d2))
|    -1|-2.000|3.4000e+00|
>>> print(f"|{n}|{d1}|{d2}|")
|-1|-2|3.4|
>>> print(f"|{n:6d}|{d1:.3f}|{d2:.4e}|")
|    -1|-2.000|3.4000e+00|
}}

** 文字列が数値(整数)に変換できるか否か確認する

int関数と例外処理を利用して以下のような関数を定義すればよい。

ソースコード

#highlight(){{
def is_integer(s):
    try:
        d = int(s)
    except Exception:
        return False
    else:
        return True
print(is_integer("0"))
print(is_integer(" -6"))
print(is_integer(" -6.6 "))
print(is_integer("-6e-6"))
print(is_integer(""))
print(is_integer("abc123"))
}}

実行結果

#highlight(){{
True
True
False
False
False
False
}}

** 文字列が数値(小数)に変換できるか否か確認する

float関数と例外処理を利用して以下のような関数を定義すればよい。

ソースコード

#highlight(){{
def is_double(s):
    try:
        d = float(s)
    except Exception:
        return False
    else:
        return True
print(is_double("0"))
print(is_double(" -6"))
print(is_double(" -6.6 "))
print(is_double("-6e-6"))
print(is_double(""))
print(is_double("abc123"))
}}

実行結果

#highlight(){{
True
True
True
True
False
False
}}
LINE
シェア
Tweet
Intro to Python
記事メニュー

メニュー

  • トップページ
  • 画面出力と入力
  • 変数とオブジェクト
  • 演算子と制御構文
  • リスト
  • 数と式
  • 文字と文字列
  • 正規表現
  • 行列
  • 日付と時刻
  • ファイル・ディレクトリの操作
  • テキストファイルの入出力
  • 画像
  • 実行とデバッグ
  • 数学
  • NumPy
  • エラーメッセージ
  • 環境
  • テキストマイニング
  • インターネット
  • Anaconda
  • その他

ここを編集
記事メニュー2

更新履歴

取得中です。


ここを編集
人気記事ランキング
  1. エラーメッセージ
もっと見る
最近更新されたページ
  • 48日前

    リスト
  • 55日前

    正規表現
  • 84日前

    メニュー
  • 87日前

    インターネット
  • 87日前

    画像
  • 102日前

    演算子と制御構文
  • 102日前

    変数とオブジェクト
  • 113日前

    Anaconda
  • 114日前

    ファイル・ディレクトリの操作
  • 114日前

    テキストファイルの入出力
もっと見る
人気記事ランキング
  1. エラーメッセージ
もっと見る
最近更新されたページ
  • 48日前

    リスト
  • 55日前

    正規表現
  • 84日前

    メニュー
  • 87日前

    インターネット
  • 87日前

    画像
  • 102日前

    演算子と制御構文
  • 102日前

    変数とオブジェクト
  • 113日前

    Anaconda
  • 114日前

    ファイル・ディレクトリの操作
  • 114日前

    テキストファイルの入出力
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. R.E.P.O. 日本語解説Wiki
  3. シュガードール情報まとめウィキ
  4. SYNDUALITY Echo of Ada 攻略 ウィキ
  5. ソードランページ @ 非公式wiki
  6. 星飼いの詩@ ウィキ
  7. GTA5 MADTOWN(β)まとめウィキ
  8. ドラゴンボール Sparking! ZERO 攻略Wiki
  9. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  10. ガンダムGQuuuuuuX 乃木坂46部@wiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 発車メロディーwiki
  6. 検索してはいけない言葉 @ ウィキ
  7. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  8. MadTown GTA (Beta) まとめウィキ
  9. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  10. 英傑大戦wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. シャア専用ヅダ - アニヲタWiki(仮)
  3. 参加者一覧 - MadTown GTA (Beta) まとめウィキ
  4. FB777 - MadTown GTA (Beta) まとめウィキ
  5. Lycoris - MadTown GTA (Beta) まとめウィキ
  6. アポカリプスホテル - アニヲタWiki(仮)
  7. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  8. 868 - ストグラ まとめ @ウィキ
  9. NO LIMIT - ストグラ まとめ @ウィキ
  10. 雑談・交流掲示板 - 星の翼(Starward) 日本語wiki @ ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.