Object-oriented-python-files-and-strings

提供:Dev Guides
移動先:案内検索

オブジェクト指向Python-ファイルと文字列

文字列

文字列は、すべてのプログラミング言語で使用される最も一般的なデータ型です。 Why? 私たちは数字よりもテキストをよく理解しているので、文章や会話ではテキストと単語を使用します。プログラミングでも文字列を使用します。 文字列では、テキストを解析し、テキストのセマンティクスを分析し、データマイニングを行います。このデータはすべて、人間が消費するテキストです。Pythonの文字列は不変です。

文字列操作

Pythonでは、複数行の文字列の場合、一重引用符( )、二重引用符(“)、さらには三重引用符( )を使用して、文字列を複数の方法でマークできます。

>>> # String Examples
>>> a = "hello"
>>> b = ''' A Multi line string,
Simple!'''
>>> e = ('Multiple' 'strings' 'togethers')

文字列操作は非常に便利で、すべての言語で非常に広く使用されています。 多くの場合、プログラマーは文字列を分解し、それらを綿密に調べる必要があります。

文字列は(文字ごとに)繰り返し、スライス、または連結できます。 構文はリストの場合と同じです。

strクラスには、文字列の操作を簡単にするための多数のメソッドがあります。 dirコマンドとhelpコマンドは、Pythonインタープリターの使用方法に関するガイダンスを提供します。

以下は、一般的に使用される文字列メソッドの一部です。

Sr.No. Method & Description
1

isalpha()

すべての文字がアルファベットかどうかを確認します

2

isdigit()

数字をチェックします

3

isdecimal()

小数文字をチェックします

4

isnumeric()

数字をチェックします

5

find()

部分文字列の最高インデックスを返します

6

istitle()

タイトルケース文字列をチェックします

7

join()

連結された文字列を返します

8

lower()

小文字の文字列を返します

9

upper()

大文字の文字列を返します

10

partion()

タプルを返します

11

bytearray()

指定されたバイトサイズの配列を返します

12

enumerate()

列挙オブジェクトを返します

13

isprintable()

印刷可能文字をチェックします

いくつかの文字列メソッドを実行してみましょう。

>>> str1 = 'Hello World!'
>>> str1.startswith('h')
False
>>> str1.startswith('H')
True
>>> str1.endswith('d')
False
>>> str1.endswith('d!')
True
>>> str1.find('o')
4
>>> #Above returns the index of the first occurence of the character/substring.
>>> str1.find('lo')
3
>>> str1.upper()
'HELLO WORLD!'
>>> str1.lower()
'hello world!'
>>> str1.index('b')
Traceback (most recent call last):
   File "<pyshell#19>", line 1, in <module>
      str1.index('b')
ValueError: substring not found
>>> s = ('hello How Are You')
>>> s.split(' ')
['hello', 'How', 'Are', 'You']
>>> s1 = s.split(' ')
>>> '*'.join(s1)
'hello*How*Are*You'
>>> s.partition(' ')
('hello', ' ', 'How Are You')
>>>

文字列のフォーマット

Python 3.xでは、文字列のフォーマットが変更され、より論理的で柔軟になりました。 フォーマットは、format()メソッドまたはフォーマット文字列の%sign(old style)を使用して実行できます。

文字列には、リテラルテキストまたは中括弧\ {}で区切られた置換フィールドを含めることができ、各置換フィールドには、位置引数の数値インデックスまたはキーワード引数の名前を含めることができます。

構文

str.format(*args, **kwargs)

基本的なフォーマット

>>> '{} {}'.format('Example', 'One')
'Example One'
>>> '{} {}'.format('pie', '3.1415926')
'pie 3.1415926'

以下の例では、引数を変更せずに表示の順序を変更できます。

>>> '{1} {0}'.format('pie', '3.1415926')
'3.1415926 pie'

文字列のパディングと整列

値は特定の長さにパディングできます。

>>> #Padding Character, can be space or special character
>>> '{:12}'.format('PYTHON')
'PYTHON '
>>> '{:>12}'.format('PYTHON')
' PYTHON'
>>> '{:<{}s}'.format('PYTHON',12)
'PYTHON '
>>> '{:*<12}'.format('PYTHON')
'PYTHON******'
>>> '{:*^12}'.format('PYTHON')
'***PYTHON***'
>>> '{:.15}'.format('PYTHON OBJECT ORIENTED PROGRAMMING')
'PYTHON OBJECT O'
>>> #Above, truncated 15 characters from the left side of a specified string
>>> '{:.{}}'.format('PYTHON OBJECT ORIENTED',15)
'PYTHON OBJECT O'
>>> #Named Placeholders
>>> data = {'Name':'Raghu', 'Place':'Bangalore'}
>>> '{Name} {Place}'.format(**data)
'Raghu Bangalore'
>>> #Datetime
>>> from datetime import datetime
>>> '{:%Y/%m/%d.%H:%M}'.format(datetime(2018,3,26,9,57))
'2018/03/26.09:57'

文字列はユニコードです

不変のUnicode文字のコレクションとしての文字列。 Unicode文字列は、ASCII文字だけでなくあらゆる文字を表現できるため、どこでも動作するソフトウェアまたはプログラムを作成する機会を提供します。

バイトオブジェクトがテキストデータを参照している場合でも、多くのIO操作はバイトの処理方法のみを知っています。 したがって、バイトとユニコードを交換する方法を知ることは非常に重要です。

テキストをバイトに変換する

文字列をバイトオブジェクトに変換することをエンコーディングと呼びます。 エンコードには多くの形式があり、最も一般的な形式は次のとおりです。 JPEG、MP3、WAV、ASCII、UTF-8など また、this(encoding)は、音声、画像、テキストなどを表す形式です。 バイト単位

この変換は、encode()を介して可能です。 引数としてエンコード手法を使用します。 デフォルトでは、「UTF-8」テクニックを使用します。

>>> # Python Code to demonstrate string encoding
>>>
>>> # Initialising a String
>>> x = 'finddevguides'
>>>
>>> #Initialising a byte object
>>> y = b'finddevguides'
>>>
>>> # Using encode() to encode the String >>> # encoded version of x is stored in z using ASCII mapping
>>> z = x.encode('ASCII')
>>>
>>> # Check if x is converted to bytes or not
>>>
>>> if(z==y):
   print('Encoding Successful!')
else:
   print('Encoding Unsuccessful!')
Encoding Successful!

バイトをテキストに変換

バイトをテキストに変換することをデコードと呼びます。 これはdecode()を通じて実装されます。 エンコードに使用されるエンコードがわかっている場合は、バイト文字列を文字列に変換できます。

したがって、エンコードとデコードは逆のプロセスです。

>>>
>>> # Python code to demonstrate Byte Decoding
>>>
>>> #Initialise a String
>>> x = 'finddevguides'
>>>
>>> #Initialising a byte object
>>> y = b'finddevguides'
>>>
>>> #using decode() to decode the Byte object
>>> # decoded version of y is stored in z using ASCII mapping
>>> z = y.decode('ASCII')
>>> #Check if y is converted to String or not
>>> if (z == x):
   print('Decoding Successful!')
else:
   print('Decoding Unsuccessful!') Decoding Successful!
>>>

ファイル入出力

オペレーティングシステムは、ファイルをテキストではなくバイトシーケンスとして表します。

ファイルは、関連情報を保存するためのディスク上の名前付きの場所です。 ディスクにデータを永続的に保存するために使用されます。

Pythonでは、ファイル操作は次の順序で行われます。

  • ファイルを開く
  • ファイルの読み取りまたは書き込み(操作)ファイルを開く
  • ファイルを閉じます。

Pythonは、着信(または発信)バイトストリームを適切なデコード(またはエンコード)呼び出しでラップし、strオブジェクトを直接処理できるようにします。

ファイルを開く

Pythonには、ファイルを開くための組み込み関数open()があります。 これにより、ファイルの読み取りまたは変更に使用されるため、ハンドルとも呼ばれるファイルオブジェクトが生成されます。

>>> f = open(r'c:\users\rajesh\Desktop\index.webm','rb')
>>> f
<_io.BufferedReader name='c:\\users\\rajesh\\Desktop\\index.webm'>
>>> f.mode
'rb'
>>> f.name
'c:\\users\\rajesh\\Desktop\\index.webm'

ファイルからテキストを読み取るには、ファイル名を関数に渡すだけです。 ファイルは読み取り用に開かれ、バイトはプラットフォームのデフォルトのエンコーディングを使用してテキストに変換されます。