web-dev-qa-db-ja.com

Pythonパーティションと分割

Splitとpartitionを使用して「Word1 Word2」のような2つの単語で文字列を分割し、次のように単語を別々に(forを使用して)印刷します。

Partition:
Word1
Word2

Split:
Word1
Word2

これは私のコードです:

print("Hello World")
name = raw_input("Type your name: ")

train = 1,2
train1 = 1,2
print("Separation with partition: ")
for i in train1:
    print name.partition(" ")

print("Separation with split: ")
for i in train1:
    print name.split(" ")

これは事件です:

Separation with partition: 
('Word1', ' ', 'Word2')
('Word1', ' ', 'Word2')

Separation with split: 
['Word1', 'Word2']
['Word1', 'Word2']
10

name.split()のようなコマンドはリストを返します。あなたはそのリストを反復することを検討するかもしれません:

_for i in name.split(" "):
  print i
_

あなたが書いたもの、すなわち

_for i in train:
  print name.split(" ")
_

コマンドprint name.split(" ")を2回(値_i=1_に対して1回、_i=2_に対して1回)実行します。そして、2回すべての結果を出力します。

_['Word1', 'Word2']
['Word1', 'Word2']
_

partitionでも同様のことが起こります-分割した要素も返すことを除いて。その場合、あなたはやりたいかもしれません

_print name.partition(" ")[0:3:2]
# or
print name.partition(" ")[0::2]
_

要素_0_および_2_を返します。または、次のことができます

_train = (0, 2,)
for i in train:
  print name.partition(" ")[i]
_

ループの2つの連続したパスで要素0と2を印刷します。この後者のコードは、パーティションを2回計算するため、より非効率的であることに注意してください。あなたが気にしたら、あなたは書くことができます

_train = (0,2,)
part = name.partition(" ")
for i in train:
  print part[i]
_
16
Floris

str.partition は、3つの要素のタプルを返します。分割文字列の前の文字列、分割文字列自体、および残りの文字列。したがって、このように使用する必要があります

first, middle, rest = name.partition(" ")
print first, rest

str.split を使用するには、次のように分割された文字列を単に印刷できます。

print name.split(" ")

ただし、このように呼び出すと、文字列に複数のスペース文字が含まれている場合、3つ以上の要素が取得されます。例えば

name = "Word1 Word2 Word3"
print name.split(" ")          # ['Word1', 'Word2', 'Word3']

1回だけ分割する場合は、次のように、2番目のパラメーターとして分割する回数を指定できます。

name = "Word1 Word2 Word3"
print name.split(" ", 1)       # ['Word1', 'Word2 Word3']

ただし、空白文字に基づいて分割しようとしている場合は、" "を渡す必要はありません。簡単にできます

name = "Word1 Word2 Word3"
print name.split()            # ['Word1', 'Word2', 'Word3']

分割数を制限する場合は、

name = "Word1 Word2 Word3"
print name.split(None, 1)     # ['Word1', 'Word2 Word3']

注:Nonesplitを使用するか、パラメーターを指定しないと、これが起こります

分割ドキュメント から引用

Sepが指定されていない場合、またはNoneの場合、異なる分割アルゴリズムが適用されます:連続する空白文字の実行は単一のセパレーターと見なされ、文字列の先頭または末尾に空白文字がある場合、結果の先頭または末尾に空の文字列は含まれません。その結果、空の文字列または空白だけで構成される文字列をNone区切り文字で分割すると、[]が返されます。

したがって、このようにプログラムを変更できます

print "Partition:"
first, middle, rest = name.partition(" ")
for current_string in (first, rest):
    print current_string

print "Split:"
for current_string in name.split(" "):
    print current_string

または、次のような str.join メソッドを使用できます

print "Partition:"
first, middle, rest = name.partition(" ")
print "\n".join((first, rest))

print "Split:"
print "\n".join(name.split())
24
thefourtheye

Partition()メソッドは、セパレーターの最初の出現で文字列を分割し、セパレーターの前の部分、セパレーター、およびセパレーターの後の部分を含むタプルを返します。

string = "Deepakは良い人であり、Preetiは良い人ではありません。" // 'is'セパレータは最初の出現時に検出されますprint(string.partition( 'is'))

出力:

(「Deepak」、「is」、「善人、Preetiは善人ではない」)

そして、スプリットでは、string = "Deepakは良い人であり、Preetiは良い人ではありません。" // 'is'セパレータはすべての発生時に検出されますprint(string.partition( 'is'))

出力:

(「Deepak」、「is」、「a good person and Preeti」、「is」、「not good person。」)

簡単に言えば、splitは指定された引数が出現するたびに文字列を分割しますが、partitionは指定された引数が最初に出現したときにのみ文字列を分割し、指定された引数を中間値として3タプルを返します。

1
Preeti Duhan