いくつかの文字の集合が文字列です。Python の文字列は二重引用符" "
または一重引用符で囲む必要があります' '
。具体的な形式は次のとおりです。
"文字列コンテンツ"
'文字列コンテンツ'
文字列の内容には、文字、句読点、特殊記号、中国語、日本語、および世界中のその他のテキストを含めることができます。
以下はすべて有効な文字列です。
- 「123789」
- 「123abc」
- 「http://c.biancheng.net/python/」
- 「C言語中国語ネットワーク設立8年目」
Python 文字列では二重引用符と一重引用符に違いはありません。PHP や JavaScriptなど、一部のプログラミング言語では、二重引用符で囲まれた文字列は変数を解析できますが、一重引用符で囲まれた文字列は常に変更されずに出力されます 。
文字列内の引用符の処理
文字列の内容に引用符が含まれている場合は、特別な処理を実行する必要があります。そうしないと、Python で次のような解析エラーが発生します。
「私は素晴らしいプログラマーです!」
上記の文字列には一重引用符が含まれているため、Python は文字列内の一重引用符を最初の一重引用符と組み合わせて文字列として扱い、'I'
その後のm a great coder!'
内容が冗長な内容となり、文法エラーが発生します。
この状況に対しては、2 つの解決策があります。
1) 引用符をエスケープする
引用符の前にバックスラッシュを追加する\
と、引用符をエスケープでき、Python は引用符を通常のテキストとして処理します。次に例を示します。
- str1 = '私は素晴らしいプログラマーです!'
- str2 = "引用符は \"、中国語の二重引用符は ""
- print(str1)
- 印刷(str2)
操作結果:
私は素晴らしいプログラマーです!
引用符は "、中国語の二重引用符は "
2) 文字列を別の引用符で囲む
文字列の内容に一重引用符が含まれている場合は、二重引用符を使用して文字列を囲むことができ、その逆も同様です。例えば:
- str1 = "私は素晴らしいプログラマーです!" #一重引用符を含む文字列を囲むには二重引用符を使用します。
- str2 = '引用符の二重引用符は "、中国語の二重引用符は "' #二重引用符を含む文字列を囲むには一重引用符を使用します
- print(str1)
- 印刷(str2)
実行結果は上記と同じです。
文字列の改行
Python は自由形式の言語ではないため、プログラムの改行とインデントに関して厳密な文法要件があります。長い文字列を新しい行で折り返すには、行の末尾にバックスラッシュを追加する必要があります。\
次の例を参照してください。
- s2 = 'この Python チュートリアルを書くのに 6 か月かかりました。\
- もっと応援してください。\
- 随時更新していきます。」
上記の s2 文字列は比較的長いため、エスケープ文字を使用して\
文字列の内容がラップされ、長い文字列を複数行に書き込むことができます。
さらに、Python は次のような改行式もサポートしています。
- 数値 = 20 + 3 / 4 + \
- 2*3
- 印刷(数値)
Python の長い文字列
「Python コメント」セクションで、3 つの一重引用符または二重引用符を使用して複数行のコンテンツにコメントできると述べましたが、これは実際に Python で長い文字列を記述する方法です。いわゆる長い文字列とは、\
(バックスラッシュを追加せずに)改行を使用して直接記述できる文字列です。Python の長い文字列は 3 つの二重引用符または 3 つの一重引用符
で囲まれます。構文形式は次のとおりです。"""
'''
"""長い文字列コンテンツ"""
'''長い文字列コンテンツ''
長い文字列内に一重引用符または二重引用符を配置しても、解析エラーは発生しません。
長い文字列がどの変数にも割り当てられていない場合、長い文字列は何の役割も果たさず、通常のテキストと何ら変わりません。これはコメントアウトされているのと同じです。
現時点では、Python インタプリタは長い文字列を無視せず、文法に従って解析しますが、長い文字列は実際的な役割を果たさないことに注意してください。
プログラム内に文字列として定義する必要がある大きなテキスト コンテンツがある場合は、最初に長い文字列形式を使用することをお勧めします。この形式は非常に強力であり、一重引用符や引用符などのあらゆるものを文字列内に配置できるためです。二重引用符。
[例] 長い文字列を変数に代入する:
- longstr = ''''この Python チュートリアルを書くのに 6 か月かかりました。
- 更新し続けるために「親指」を押してください。
- Python チュートリアルは http://c.biancheng.net/python/ から入手できます。
- print(longstr)
長い文字列中の改行、スペース、インデントなどの空白文字はそのまま出力されるため、次のような記述はできません。
- longstr = ''
- この Python チュートリアルを書くのに 6 か月かかりました。
- 更新し続けるために「親指」を押してください。
- Python チュートリアルは http://c.biancheng.net/python/ から入手できます。
- 「」
- print(longstr)
形式は美しいですが、出力は次のようになります。
この Python チュートリアルを書くのに 6 か月かかりました。
更新し続けるために「親指」を押してください。
Python チュートリアルは http://c.biancheng.net/python/ から入手できます。
文字列コンテンツの前後にさらに 2 つの空白行があり、各行の前にさらに 4 つのスペースが存在します。
Python の生の文字列
Python 文字列のバックスラッシュには、\
上記の\'
やなどの文字をエスケープする特別な機能があります\"
。詳しくは「Python エスケープ文字」セクションで説明しますが、ここでは簡単に理解します。エスケープ文字は時々問題を引き起こすことがあります。たとえば、Windows のパスを含む文字列を
表現したい場合、それが通常の文字列であろうと長い文字列であろうと、Python プログラムに直接記述することは間違いなく機能しません。D:\Program Files\Python 3.8\python.exe
の特殊性のため、\
文字列内の各要素\
をエスケープする必要があります。つまり、D:\\Program Files\\Python 3.8\\python.exe
この形式で記述する必要があります。
この種の記述では、わずかな見落としが間違いにつながる可能性があるため、特別な注意が必要です。文字のエスケープの問題を解決するために、Python は生の文字列をサポートしています。元の文字列では\
エスケープ文字として扱われず、すべてのコンテンツは「オリジナル」のままになります。
通常の文字列または長い文字列の先頭にプレフィックスを追加してr
、元の文字列に変換します。具体的な形式は次のとおりです。
str1 = r'元の文字列の内容'
str2 = r"""元の文字列の内容"""
上記の Windows パスを生の文字列に書き換えます。
- rstr = r'D:\Program Files\Python 3.8\python.exe'
- 印刷(rstr)
生の文字列内の引用符
元の文字列に通常の形式で引用符が含まれている場合、プログラムは引用符をエスケープする必要があります。そうしないと、Python は依然として文字列の引用符を正確に一致させることができません。ただし、通常の文字列とは異なり、この時点でエスケープするためにバックスラッシュが使用されます。 time バーは文字列コンテンツの一部になります。
以下のコードを見てください。
- str1 = '私は素晴らしいプログラマーです!'
- print(str1)
出力結果:
私は素晴らしいプログラマーです!
Python の元の文字列のバックスラッシュは依然として引用符をエスケープすることに注意してください。そのため、元の文字列の末尾をバックスラッシュにすることはできません。そうでない場合、文字列の末尾の引用符がエスケープされ、文字列「Can't end」が発生します。正しく。
Python でこの問題を解決するには 2 つの方法があります: 1 つは生の文字列ではなく長い文字列を記述する方法で、もう 1 つはバックスラッシュを個別に記述する方法で、次にこれに焦点を当てます。
たとえば、それを表現したい場合はD:\Program Files\Python 3.8\
次のように記述できます。
- str1 = r'D:\Program Files\Python 3.8' '\\'
- print(str1)
最初に元の文字列を書きr'D:\Program Files\Python 3.8'
、次に'\\'
エスケープ文字を含む通常の文字列を書きました。Python は 2 つの文字列を自動的に結合するため、上記のコードの出力は次のようになります。
D:\プログラム ファイル\Python 3.8\
この記述方法には文字列の結合に関する知識が含まれるため、ここで理解するだけで十分です (文字列の結合については後ほど詳しく紹介します)。