2012-02-23 3 views
0

私は複数のスペースで区切られたフレーズまたは単語を含むいくつかの文字列を持っています。これらの文字列を文字列の配列に分割するにはどうすればよいですか?

c1 = "St. Louis  12    Cardinals" 
c2 = "Boston   16    Red Sox" 
c3 = "New York  13    Yankees" 

どのように私は、文字列の配列に各ラインを分離するためのpython split(" ")機能を使用して、おそらく関数を書くのですか?たとえば、c1は['St. Louis', '12', 'Cardinals']になります。

split(" ")を呼び出すと、セントルイスやレッドソックスなどのエンティティにスペースがあるため、コンポーネントエンティティをトリミングしても機能しません。

しかし、私は、すべてのエンティティが少なくとも2スペース離れており、エンティティ内に2つのスペースがないことを知っています。ちなみに、私は実際に対処する約100の都市を持っています.3はありません。ありがとう!

+2

行うことが常にそうであると仮定した場合、それらは、スペースではなくタブ、そしてあなたがいつも使ってスライス、それを逆にすることができます'\ s {2、}'の正規表現分割 – mpen

+0

ありがとう、正規表現分割とは何ですか? – dangerChihuahua007

+1

実際に値がこのように並んでいますか?それらは本当に間にあるスペースですか、タブですか? –

答えて

4

を使用することができます。

c1 = "St. Louis  12    Cardinals" 
words = [w.strip() for w in c1.split(' ') if w] 
# words == ['St. Louis', '12', 'Cardinals'] 
+0

ありがとう!これは、モジュールをロードせずにジョブを実行します。 – dangerChihuahua007

3
import re 
re.split(r' {2,}', c1) 
re.split(r' {2,}', c2) 
re.split(r' {2,}', c3) 
+0

うわー、ありがとう、どうしたの?なぜ2の後にカンマがあるのですか? – dangerChihuahua007

+0

これは[正規表現](http://www.regular-expressions.info/)の例です。正規表現とも呼ばれています(私がお勧めします)。式は、私たちが分割していることを示しています。 '{2、} 'は" 2つ以上のスペース "を意味します。 '{2,5}'と書いた場合は、2〜5スペースを意味します。コンマは空白で終わります。 –

2

あなたは正規表現でこれを行うことができます:

import re 

blahRegex = re.compile(r'(.*?)\s+(\d+)\s+(.*?)') 

for line in open('filename','ro').readlines(): 
    m = blahRegex.match(line) 
    if m is not None: 
     city = m.group(1) 
     rank = m.group(2) 
     team = m.group(3) 

猫、あなたはnamed groupsを使用することができ、または...あなたの正規表現がタイトにする。しかし、これが何をすべき皮膚に多くの方法がありますそれ。

2

あなたは、正規表現がなければre.split

>>> re.split('\s{2,}','St. Louis  12    Cardinals') 
['St. Louis', '12', 'Cardinals'] 
2

その内容は固定幅であるように見えます。

split_fields = lambda s: [s[:16].strip(), s[16:31:].strip(), s[31:].strip()] 

か::

def split_fields(s): 
    return [s[:16].strip(), s[16:31:].strip(), s[31:].strip()] 

使用例:

>>> split_fields(c1) 
['St. Louis', '12', 'Cardinals'] 
>>> split_fields(c2) 
['Boston', '16', 'Red Sox'] 
>>> split_fields(c3) 
['New York', '13', 'Yankees'] 
関連する問題