(1)文字列
文字列は、Python で最も一般的に使用されるデータ型です。文字列を作成するには引用符 ( ' または " ) を使用できます。その名前が示すように、ケバブは羊肉で作られた文字列であり、文字列は文字で構成されます。文字列の本質は、一連の文字です 。
2
Python は
単一文字型をサポートしておらず、単一文字も文字列として使用されます。
文字列の作成は、変数に値を割り当てるのと同じくらい簡単です。例えば:
var1 = 'Hello World!'
var2 = "Python"
Python
文字列は不変であり、元の文字列を変更することはできません。
ただし、文字列の一部を新しく作成した文字列にコピーして、「見た目が変更された」効果
を実現することは可能です
。
(2)文字列のエンコード
Python3 は
、世界中のあらゆる書き言葉の文字を表現できるUnicode
を直接サポートしています。
Python3文字のデフォルトは16ビットUnicodeエンコードであり、ASCII コードは Unicode エンコードのサブセットです。
変換のヒント:
組み込み関数ord()を使用して、文字を対応するUnicodeコードに変換します。組み込み関数chr()を使用して、10 進数を対応する文字に変換します。
print(ord('A')) #65
print(ord('成')) #25104
print(chr(66)) #'B'
print(ord('龙') )#40857
(3)引用符は文字列を作成します
①シングルクォートまたはダブルクォーテーションで文字列を作成できます。例:
a='abc'
b="sxt"
2 種類の引用符を使用する利点は、エスケープ文字を使用せずに引用符自体を含む文字列を作成できることです。例えば:
a = "I'm a teacher!"
print(a) #I'm a teacher!
b = 'my_name is "Jackie Chan"'
print(b) #my_name is "Jackie Chan"
② 連続する 3 つの単一引用符または 3 つの二重引用符は、複数行の文字列を作成するのに役立ちます。長い文字列では、元の書式設定が保持されます。例えば:
(4) 空文字列とlen()関数
Python では
、文字を含まず、長さが
0の空の文字列の存在が許可されます
。例えば:
c = ''
print(len(c)) #结果:0
このうち、len()は
文字列に含まれる文字数を計算するために使用されます。
(5)エスケープ文字
\+ 特殊文字を
使用すると、
文字で表現するのが難しい効果を得ることができます。例: 改行など。一般的なエスケープ文字は次のとおりです。
エスケープ文字 | 説明する |
---|---|
\ (行末) | 継続文字 |
\\ | バックスラッシュ記号 |
\' | アポストロフィ |
「 | 二重引用符 |
\a | ベルを鳴らす |
\b | バックスペース |
\e | 逃げる |
\000 | ヌル |
\n | 改行 |
\v | 垂直タブ |
\t | 水平タブ |
\r | キャリッジリターン |
\f | ページを変更する |
\オイ | 8 進数。y は 0 ~ 7 の文字を表します。たとえば、\012 は改行を表します。 |
\xyy | \x で始まる 16 進数、yy で表される文字。例: \x0a は改行を表します。 |
\他の | その他の文字は通常の形式で出力されます |
【操作】エスケープ文字の使用テスト
コード
a = 'I\nlove\bU'
print(a)
print('a\rabb\\cc')
(6) Python の文字列演算子
次の表のインスタンス変数 a の値は文字列「Hello」で、変数 b の値は「Python」です。
オペレーター | 説明する | 例 |
---|---|---|
+ | 文字列の連結 | >>>a + b 'HelloPython' |
* | 出力文字列を繰り返す | >>>a*2「ハローハロー」 |
[] | インデックスを使用して文字列内の文字を取得する | >>>a[1] 'e' |
[ : ] | 文字列の一部を抽出する | >>>a[1:4] 「えー」 |
で | メンバーシップ演算子 - 指定された文字が文字列に含まれている場合に True を返します。 | >>>True の「H」 |
ありませんで | メンバーシップ演算子 - 指定された文字が文字列に含まれていない場合に True を返します。 | >>>「M」は True にありません |
R/R | Raw Strings - Raw Strings:すべての文字列は、特殊文字や印刷不可能な文字をエスケープせずに文字通り使用されます。生の文字列の構文は通常の文字列とほぼ同じですが、文字列の最初の引用符の前に文字「r」(大文字と小文字)が追加される点が異なります。 | >>> r'\n' を印刷 \n >>> R'\n' を印刷 \n |
% | フォーマット文字列 | 次の章を参照してください |
特定のコード
a = "Hello"
b = "Python"
print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])
if ("H" in a):
print( "H 在变量 a 中")
else:
print( "H 不在变量 a 中")
if ("M" not in a):
print("M 不在变量 a 中")
else:
print("M 在变量 a 中")
print(r'\n')
print(R'\n')
実行結果:
文字列の結合:
+を使用して
複数の文字列を結合できます。例:
「aa」+「bb」
の結果は
「aabb」になります。
-
+ の両側が文字列の場合は連結します。
-
+の両辺が数字の場合の加算
-
+ の両側の型が異なる場合、例外がスローされます。
複数のリテラル文字列を直接連結できます。例: 'aa' 'bb'は'aabb'になります
a = 'sxt'+'qiqi' #结果是:'sxtqiqi'
b = 'sxt''qiqi' #结果是:'sxtqiqi'
(7)文字列スライススライス操作
スライス
操作
を使用すると、部分文字列をすばやく抽出できます。標準形式は次のとおりです。
[開始オフセット start: 終了オフセット end: ステップサイズ step]
操作と指示 | 例 | 結果 |
[:] は文字列全体を抽出します | 「abcdef」[:] | 「abcdef」 |
[start:]開始インデックスから終了まで | 「abcdef」[2:] | 「cdef」 |
[:end] end-1をゼロから知る | 「abcdef」[:2] | 「アブ」 |
[開始:終了]開始から終了まで-1 | 「abcdef」[2:4] | "CD" |
[start:end:step] startからend-1までを抽出します。ステップ サイズはstepです。 | 「abcdef」[1:5:2] | 「BD」 |
例 | 説明する | 結果 |
「abcdefghijklmnopqrstuvwxyz」
[-3:]
|
最後の3つ | 「xyz」 |
「abcdefghijklmnopqrstuvwxyz」
[-8:-3]
|
最後から8番目から最後から3番目まで(
headerは含むがtailは含まない
)
|
「ストゥヴ」 |
「abcdefghijklmnopqrstuvwxyz」
[::-1]
|
負のステップ サイズ、右から左への逆抽出
|
「zyxwvutsrqponmlkjihgfedcba」 |
注意:切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于0则会当做0,终止偏移量大于“长度-1”会被当成-1。例如:
(八)split()分割和join()合并
split()
可以基于指定分隔符将字符串分隔成多个子字符串
(
存储到列 表中)
。如果不指定分隔符,则默认使用空白字符
(
换行符
/
空格
/
制表符)
。示例代码如下:
a = "to be or not to be"
print(a.split())
print(a.split('be'))
运行效果:
join()
的作用和
split()
作用刚好相反,用于将一系列子字符串连接起
来。示例代码如下:
a = ['sxt','sxt100','sxt200']
print('*'.join(a))
运行效果:
总结:
拼接字符串要点:使用字符串拼接符 + ,会生成新的字符串对象,因此不推荐使 用 + 来拼接字符串。推荐使用 join 函数,因为 join 函数在拼接字 符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。
(九) 字符串常用方法汇总
字符串有很多常用的方法,我们需要熟悉。我们通过表格将这些方 法汇总起来,方便大家查阅。希望大家针对每个方法都做一次测试。
我们以一段文本作为测试:
a='''ablchbjj '''
方法和使用示例 | 说明 | 结果 |
len(a) | 字符串长度 | 8 |
a.startswith('abl') | 以指定字符串开头 | True |
a.endswith('jj') | 以指定字符串结尾 | True |
a.find('b') | 第一次出现指定字符串的位置 | 1 |
a.rfind('b') | 最后一次出现指定字符串的位置 | 5 |
a.count("lch") | 指定字符串出现了几次 | 1 |
a.isalnum() | 所有字符全是字母或数字 | True |