小さな発言から始めましょう。
Python 2.3以降、非ASCIIエンコーディングを使用する場合は、プログラムの最初にエンコーディング参照を追加する必要があります。 ロシア語の場合、これは主に次のようになります。
#-*-コーディング:cp1251-*-
または、utf-8ファイルを使用してソースコードを保存します(推奨)。
番号管理を学んだので、次は行を学習します。 Pythonには、この領域に非常に豊富な機能セットがあります。
行
文字列は一重引用符または二重引用符で囲むことができ、文字列はCスタイルのescシーケンスを使用でき、複数行の定数は三重引用符で指定できます。
>>> "habrahabr" 「habrahabr」 >>> 'foo bar boz' 「foo bar boz」 >>>「しない」 「しません」 >>> 'don "t" 「ドン」 >>> "couldn \" t " 「できなかった」 >>> "" "複数行 ...非常に長い ...文字列定数 "" " '複数行\ n非常に長い\ nstring定数' >>> 'これには\ ... 2行 「これには2行かかる」
文字列は+演算子で接着でき、*演算子で「伝播」できます
>>>「こんにちは」+「単語」 「こんにちは」 >>> "Hello" * 3 「ハローハローハロー」
本質的に、文字列はランダムアクセスのある文字のシーケンスです。 文字列の一部を取得するには、いわゆるを使用できます。 カットオフ演算子。 番号付けはゼロから始まることに注意してください(一見するとかなり混乱しています)。
>>> str = "こんにちは、残酷な世界!" #4行の文字を取得 >>> str [3] 「l」 #8〜14のすべての文字 >>> str [7:14] 「cruel w」 #2から13までの1文字ごと >>> str [1:12:2] 「el、cul」 #一部の値は省略可能 #文字列の2文字ごと。 >>> str [:: 2] 「Hlo re ol!」
3つのパラメーターの最初のパラメーターを省略すると、ゼロに等しいと見なされ、2番目のパラメーターを省略すると、スライスは行の最後まで続行されます。
#行の最初の2文字 >>> str [:2] 「彼」 #最初の2文字を除く行全体 >>> str [2:] 「ロロ、残酷な世界!」
不規則な境界線を持つスライスは、次のように処理されます。
-スライスの上部境界が文字列の長さよりも大きい場合、文字列の長さに縮小されます
-下限が上限より大きい場合、空の文字列が返されます
スライスは負の値を取ることもできます。
#最後のキャラクター >>> str [-1] 「!」 #末尾から2番目の文字 >>> str [-2] 「d」 #最後の2文字 >>> str [-2:] 「d!」 #最後の2つを除くすべての文字 >>> str [:-2] 「こんにちは、残酷な世界」
スライス内でインデックスがどのように定義されているかを覚える最善の方法は、インデックスが文字間を指していることを考慮することです。最初の文字の左の境界は数字の0です。 そして、最後の文字の右境界線には、文字列の長さに等しいインデックスがあります。
正の文字の場合、文字列の長さは境界上の数字の差です。
文字列の長さを確認するには、len()関数を使用します。
Unicode
Pythonの最近のバージョンでは、Unicode文字列の処理が非常によくサポートされています。
Unicode文字列を定数として指定するには、uプレフィックスが使用されます。
>>> uni = u "Test" >>> uni u '\ u0422 \ u0435 \ u0441 \ u0442'
さらに、Pythonでは、同じ名前の関数を使用してUnicodeの文字列を作成できます。
>>> uni = unicode( "Test"、 "UTF-8") >>> uni u '\ u0422 \ u0435 \ u0441 \ u0442'
この関数関数は、Latin-1、ASCII、UTF-8、UTF-16、ロシア語エンコードISO-8859-5、KOI8-R、CP1251、CP866、Mac-cyrillic、およびその他の多くで使用できます。
変換を逆にするには、encodeメソッドを使用します。このメソッドは、Unicode文字列を特定のエンコーディングの文字列に変換します。
>>> uni.encode( "UTF-8") '\ xd0 \ xa2 \ xd0 \ xb5 \ xd1 \ x81 \ xd1 \ x82' >>> uni.encode( "CP1251") '\ xd2 \ xe5 \ xf1 \ xf2'
特定の区切り文字を使用して文字列をリストに変換するには、splitメソッドを使用します。
このメソッドはパラメーターとして区切り文字を要求し、forループで「渡す」ことができる個々の「単語」のリストを返します。
>>> str = "メアリーには子羊がいます" >>> str.split( "") ['Mary'、 'has'、 'a'、 'little'、 'lamb'] >>> str.split内の単語( ""): ...印刷する ... メアリー 持っている a 少し 子羊
宿題。
1.少なくとも3つの異なるエンコーディングでユーザー定義の文字列を表示するプログラムを作成します。 同時に、プログラムでencode()メソッドの呼び出しを1回だけ書くことができます。
2.文字列の中でスペースで区切られた最長の単語を検索するプログラムを作成します。
3. (複雑さの増加)発信者IDの電話番号デコードプログラムを作成します。
発信者IDの要求に応じて、PBXは次のルールを使用して電話番号を送信します。
-数が2回未満繰り返される場合、これは障害であり、破棄する必要があります
-各有効数字が少なくとも2回繰り返されている
-番号に複数の数字が連続して含まれる場合、連続して2回以上使用される記号#は、「前の数字と同じ数字」を示すために使用されます。
たとえば、着信回線4434 ### 552222311333661は4452136に対応
ところで、これらのタスクでは正規表現を使用できません:)