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
  • 文字と文字列

Intro to Python

文字と文字列

最終更新:2025年02月20日 21:54

introtopython

- view
管理者のみ編集可

目次

  • 目次
  • 基本操作
    • 文字列の長さを調べる
    • 文字列を連結する
    • 文字列の指定した一部を取り出す
    • 文字列の前後の空白を取り除く
    • 文字列を特定の文字または文字列で分割する
    • 文字列を数値に変換する
    • 文字の文字コードを簡単に調べる
    • raw文字列を使う
  • 応用操作
    • 同じ文字列が繰り返された文字列を作る
    • 指定した長さの空白(0x20)文字列を作る
    • 桁を変数で指定して書式化する
    • 文字列のハッシュ値を得る
    • バイト列リテラルからbytes型変数を作成する
    • 数値を文字列に変換する
    • 文字列が数値(整数)に変換できるか否か確認する
    • 文字列が数値(小数)に変換できるか否か確認する

基本操作

文字列の長さを調べる

len関数を使う。

>>> len('ABC')
3
>>> len('あい')
2
>>> len('阿伊宇ab')
5

文字列を連結する

+演算子を使う。

>>> s = 'a' + 'bc' + 'def'
>>> print(s)
abcdef

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

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

>>> 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)を削除した文字列を返す。

>>> 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番目の例のとおり、正規表現を使って分割の条件を指定することができる。

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

文字列を数値に変換する

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

>>> 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進数であることを示す接頭語)。

あ 0x82A0 0xE38182
い 0x82A2 0xE38184
亜 0x889F 0xE4BA9C
井 0x88E4 0xE4BA95
>>> 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'

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

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

raw文字列を使う

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

>>> s = "a\nbc\ndef"
>>> print(s)
a
bc
def
>>> s = r"a\nbc\ndef"
>>> print(s)
a\nbc\ndef

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

>>> s = "C:\\Windows\\System"
>>> print(s)
C:\Windows\System
>>> s = r"C:\Windows\System"
>>> print(s)
C:\Windows\System

応用操作

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

*演算子を使う。

>>> 'A' * 3
'AAA'
>>> 'Abc' * 4
'AbcAbcAbcAbc'

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

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

>>> s = ' ' * 7
>>> len(s)
7
>>> print('>' + s + '<')
>       <

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

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

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

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

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

>>> 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メソッドを使う。

>>> 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メソッドかフォーマット済み文字列リテラルを使う。

>>> 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関数と例外処理を利用して以下のような関数を定義すればよい。

ソースコード

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"))

実行結果

True
True
False
False
False
False

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

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

ソースコード

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"))

実行結果

True
True
True
True
False
False
「文字と文字列」をウィキ内検索
LINE
シェア
Tweet
Intro to Python
記事メニュー

メニュー

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

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

更新履歴

取得中です。


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

    リスト
  • 17日前

    正規表現
  • 46日前

    メニュー
  • 49日前

    インターネット
  • 49日前

    画像
  • 64日前

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

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

    Anaconda
  • 76日前

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

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

    リスト
  • 17日前

    正規表現
  • 46日前

    メニュー
  • 49日前

    インターネット
  • 49日前

    画像
  • 64日前

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

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

    Anaconda
  • 76日前

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

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

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

  1. ガンダムGQuuuuuuX 乃木坂46部@wiki
  2. R.E.P.O. 日本語解説Wiki
  3. VCR GTA3まとめウィキ
  4. ありふれた職業で世界最強 リベリオンソウル @ ウィキ
  5. SYNDUALITY Echo of Ada 攻略 ウィキ
  6. ドタバタ王子くん攻略サイト
  7. シュガードール情報まとめウィキ
  8. STAR WARS ジェダイ:サバイバー攻略 @ ウィキ
  9. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  10. パズル&コンクエスト(Puzzles&Conquest)攻略Wiki
もっと見る
人気Wikiランキング

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

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

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

  1. ムーチョ 文岡 - ストグラ まとめ @ウィキ
  2. 参加者一覧 - ストグラ まとめ @ウィキ
  3. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  4. 無馬 かな - ストグラ まとめ @ウィキ
  5. 攻略チャート - サバイバルキッズ孤島の冒険者 攻略まとめwiki
  6. 鬼野 ねね - ストグラ まとめ @ウィキ
  7. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
  8. エンディング一覧&条件 - サバイバルキッズ孤島の冒険者 攻略まとめwiki
  9. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  10. 千鳥の鬼レンチャン 挑戦者一覧 - 千鳥の鬼レンチャン サビだけカラオケデータベース
もっと見る

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

2019 AtWiki, Inc.