はじめに
文字列は一番最初に使い始めるリテラルだと思いますが、意外と奥が深いです。
便利な書き方やうっかりエラーが吐かれたりすることも多いかと思うので、あるあるシリーズとしてまとめてみました!
ブラックボックスで実行されることが多くむず痒い思いをされる方もいらっしゃるでしょう・・・プラスαの知識もあったら是非使ってみてください!

なんでここで改行されちゃうの・・・!
って場面も多いからね。




確かに・・・
文字列の定義
まず文字列の定義からです。
文字列は
- ‘ ‘のシングルクォテーションで囲う方法
- ” “のダブルクォテーションで囲う方法
の2パターンあります。
# シングルクォテーション
'super kuma'
# ダブルクォテーション
"smart same"
色々な記事をみているとシングルクォテーションの方が良いと言っている方も多いですが、ぶっちゃけ
どちらでも構いません!!!!
例え読み込みが遅くなると言っても体感で全く分からないくらいのものです。
そんなことで悩むより他の使い方を覚える方に脳のメモリを使っていきましょう。




僕はJISキーのデフォルトだとシングルクォテーション打ちにくいからダブルクォテーションの方が好きだな!




僕は海外の記事をみているとシングルが多いからシングルクォテーション使っているなぁ。
よくある使い方
文字列の中にシングルクォテーションまたはダブルクォテーションを使いたい
時々、英語などの省略形などで I’m not…などでシングルクォテーションやダブルクォテーションを使わなければいけないシーンが出てきます。
その時囲っている方法によってはエラーが出てしまいます。
# エラーが出てしまう
$ '英語: I'm a super engineer.'
> SyntaxError: invalid syntax
※Iの次のシングルクォテーションまでを文字列と捉え、残りが何か分からないため。
こう言ったケースの場合にはバックスラッシュの\を使ってエスケープ処理を行います。
# \(バックスラッシュ)を使ってエスケープ
$ '英語: I\'m a super engineer.'
エスケープとは?
エスケープ処理とはどういうものかというと、Pythonの定義などで使われる特別な意味を持つ文字や記号を文字列として認識させるというものです。
他の言語でもよく使うので覚えておきましょう!
途中で改行したい
シンプルに途中で改行したくなった時です。
改行の方法は2つです。
- \n(バックスラッシュn)を追加する。
- シングルクォテーションまたはダブルクォテーションを3つ連続させる
# 1行の文字列内で改行したい場合
$ print('僕は\nスーパーエンジニア\nになる!')
> 僕は
> スーパーエンジニア
> になる!
# シングルクォテーションまたはダブルクォテーションを3つ連続させる
print(
'''
僕は.....................................
スーパーエンジニア.................................
になる!
'''
)
> 僕は
> スーパーエンジニア
> になる!
見た目は1行でいいけど途中で改行したい
Pythonの1行あたりのコード量は目安80字という暗黙のルールがあります。
そのため、80字を超えてしまいそうな文字列の場合はエディタ上で改行する必要があります!
改行の方法はどちらも変数に格納してからprint関数を使うのですが、格納する方法が2つあります
- ()で囲って入れる
- \を行末に追加する。(改行しないという意思表示。)
# ()で囲って入れる
$ string = ('僕は..................'
'スーパーエンジニア.................................'
'になる!')
$ print(string)
> 僕は..................スーパーエンジニア.................................になる!
# \を行末に追加する。
$ string = '僕は..................'\
'スーパーエンジニア.................................'\
'になる!'
$ print(string)
> 僕は..................スーパーエンジニア.................................になる!
同じ文字を連続させたい
繰り返し文字列を入力したい場合ですが、なんと文字列を掛け算することが可能です!
# 文字列の連続
$ 'kuma' * 3
> kumakumakuma
print関数内で文字列を連結させる
print関数内で文字を連結させたい場合、方法は3つあります。
- 文字列を+でつなぐ
- ,でつなぐ
- そのまま 書く笑
# + でつなぐ
$ print('僕は' + 'スーパーエンジニア' + 'になる!')
> 僕はスーパーエンジニアになる!
# ,でつなぐ
$ print('僕は', 'スーパーエンジニア', 'になる!')
> 僕はスーパーエンジニアになる!
#そのまま書く
$ print('僕は' 'スーパーエンジニア' 'になる!')
> 僕はスーパーエンジニアになる!




え、めちゃくちゃ簡単なんだね。
Rubyのputsとかpだと改行されちゃうけど、、、




pythonはカンマで連結できるからすごいよね。
とっても便利。
番外編
綺麗にprintで改行された文字列を表示させたいのに改行がついてしまう
本来は下記のように表示させたいと思った時にどのようにコードを書くでしょうか?
###################
test1
test2
test3
###################
上記の記事の内容からは以下のようなコードを書くと思います。
print('###################')
print(
'''
test1
test2
test3
''')
print('###################')
しかし、実際に表示されるのは
###################
test1
test2
test3
###################
となんと改行されて出力されてしまうのです!
これはシングルクォテーションまたはダブルクォテーション3つで囲った時に空白行が含まれてしまうからなのです。
じゃあどうするの?
空白行を消すための方法は2つあります。
- シングルクォテーションまたはダブルクォテーション3つで囲った時の改行を無くす
- 空白行を消すための\を追加
# シングルクォテーションまたはダブルクォテーション3つで囲った時の改行を無くす
print('###################')
print(
'''test1
test2
test3''')
print('###################')
# 空白行を消すための\を追加
print('###################')
print(
'''\
test1
test2
test3\
''')
print('###################')




おおお!
微妙にうまくいかなかった部分がなんとか綺麗に表示できたよ。
どっちの方がいいのかな。




個人的には後者の方が見やすいかも。
まとめ
- 文字列はシングルクォテーションまたはダブルクォテーションで囲う
- 困った時はエスケープ
- 改行をしたい場合は\n




Pythonの学習に関しては様々本屋には書籍が並んでいますが、下記がおすすめです。
EXCELなども使ったことのない初学者の方
EXCELなどでちょっとPCの操作に慣れている方
他のプログラミング言語を少し触ったことがある方