Pythonで文字列を分割し、分割された各部分を後で使用する変数に割り当てることは可能ですか? 可能であれば長さで分割できるようにしたいのですが、len() を使用してどのように機能するかわかりません。
私はこれを試しましたが、必要なものが得られませんでした:
x = 'this is a string'
x.split(' ', 1)
print x
結果: ['これ']
私はこのような結果になりたい:
a = 'this'
b = 'is'
c = 'a'
d = 'string'
Pythonで文字列を分割し、分割された各部分を後で使用する変数に割り当てることは可能ですか? 可能であれば長さで分割できるようにしたいのですが、len() を使用してどのように機能するかわかりません。
私はこれを試しましたが、必要なものが得られませんでした:
x = 'this is a string'
x.split(' ', 1)
print x
結果: ['これ']
私はこのような結果になりたい:
a = 'this'
b = 'is'
c = 'a'
d = 'string'
一度に 3 文字の文字列にアクセスしたい場合は、slicingを使用する必要があります。
次のようなリスト内包表記を使用して、文字列の 3 文字の長さの部分のリストを取得できます。
>>> x = 'this is a string'
>>> step = 3
>>> [x[i:i+step] for i in range(0, len(x), step)]
['thi', 's i', 's a', ' st', 'rin', 'g']
>>> step = 5
>>> [x[i:i+step] for i in range(0, len(x), step)]
['this ', 'is a ', 'strin', 'g']
重要な点は次のとおりです。
[x[i:i+step] for i in range(0, len(x), step)]
range(0, len(x), step)各step-character スライスの開始インデックスを取得します。 for i inこれらのインデックスを反復処理します。 インデックスから始まり、長さが文字x[i:i+step]のスライスを取得します。xistep
毎回正確に4 ピースが得られることがわかっている場合は、次のようにできます。
a, b, c, d = [x[i:i+step] for i in range(0, len(x), step)]
これは、次の場合に発生します3 * step < len(x) <= 4 * step。
ちょうど 4 個のピースがない場合、Python はValueErrorこのリストをアンパックしようとします。このため、この手法は非常に脆弱であると考え、使用しません。
あなたは簡単に行うことができます
x_pieces = [x[i:i+step] for i in range(0, len(x), step)]
にアクセスしていた場所に、 にアクセスaできるようになりx_pieces[0]ました。などにb使用できますx_pieces[1]。これにより、柔軟性が大幅に向上します。
あなたは開梱を使用することができます
a,b,c,d=x.split(' ');
いくつかの選択肢
私は通常、正規表現に傾倒していませんが、文字列をチャンクするには、使用するのも悪くありません。
>>> s = 'this is a string'
>>> re.findall('.{1,3}', s)
['thi', 's i', 's a', ' st', 'rin', 'g']
そしてやり過ぎ
>>> t = StringIO(s)
>>> list(iter(lambda: t.read(3), ''))
['thi', 's i', 's a', ' st', 'rin', 'g']
次のようなことを試すことができます:
In [77]: x = 'this is a string'
In [78]: a,b,c,d=[[y] for y in x.split()]
In [79]: a
Out[79]: ['this']
In [80]: b
Out[80]: ['is']
In [81]: c
Out[81]: ['a']
In [82]: d
Out[82]: ['string']
In [144]: s = 'this is a string'
In [145]: lenn=len(s)//3 if len(s)%3==0 else (len(s)//3)+1
In [146]: it=iter(s)
In [147]: ["".join(islice(it,3)) for _ in range(lenn)]
Out[147]: ['thi', 's i', 's a', ' st', 'rin', 'g']
x = 'this is a string'
splitted = x.split()
count = 0
while count <= len(splitted) -1:
print splitted[count]
count = count + 1
これにより、各パーツが1行で印刷されます...ここでは、使用方法も確認できますlen()
whileループは、カウンターが最大長に達するまで各行を出力します
x, i = 'this is a string', 0 #assigning two variables at once
while i <= len(x):
y = x[i: i + 3]
print y
i += 3 #i = i + 3
これには「スペース」文字 (' ') が含まれます。
各番号を保持したい場合は、それらをリストに保持します。
x, my_list, i = 'this is a string', [], 0
while i <= len(x):
y = x[i : i + 3]
my_list.append(y)
i += 3
def tst(sentence):
print sentence
bn=sentence.split(" ");
i=0
for i in range(0,len(bn)):
a= bn[i]
i=i+1
print a
この方法でテストします。
if __name__ == '__main__':
x="my name is good"
tst(x)
これにより、文字列が 27 語未満であるという制約の下で、必要な正確な出力が生成されます。チャンクを表すキーが不足した場合は、いつでもジェネレーターを使用できます。
x = 'this is a string'
chunks = x.split(' ')
key = 'a'
for chunk in chunks:
print key + " = " + chunk
key = chr(ord(key) + 1)