0

文の特定の部分を抽出したい。私の問題は、それぞれが異なる形式の文のリストを持っていることです。例えば:

X.y.com
 x.no
 x.com
 y.com
 z.co.uk
 s.com
 b.t.com

ドットの数に基づいてこれらの線を分割するにはどうすればよいですか?文の2番目の部分に2つのドットを付け、文の最初の部分に1つのドットを付けたい場合

4

4 に答える 4

2

最後のドットの直前の部分が必要です。点を分割して1つを取りますが、最後の部分は次のとおりです。

for line in data:
    if not '.' in line: continue
    elem = line.strip().split('.')[-2]

あなたの入力のために、それは与えます:

>>> for line in data:
...     print line.strip().split('.')[-2]
... 
y
x
x
y
co
s
t
于 2013-03-15T14:40:06.443 に答える
0

質問に答えるにはcount、「。」の回数を数えるために使用できます。が表示されたら、必要なことをすべて実行します。

>>> 't.com'.count('.')
1
>>> 'x.t.com'.count('.')
2

あなたはそれをループで使うことができます:

for s in string_list:
    dots = s.count('.')
    if dots == 1:
        # do something here
    elif dots == 2:
        # do something else
    else:
        # another piece of code

あなたの問題を解決するためのよりPython的な方法:

def test_function(s):
    """
        >>> test_function('b.t.com')
        't'

        >>> test_function('x.no')
        'x'

        >>> test_function('z')
        'z'
    """
    actions = {0: lambda x: x
               1: lambda x: x.split('.')[0],
               2: lambda x: x.split('.')[1]}
    return actions[s.count('.')](s)
于 2013-03-15T15:03:06.843 に答える
0

単純に分割機能を使用します。

a = 'x.com'
b = a.split('.')

これにより、bの2つのアイテムのリストが作成されます。ドットが 2 つある場合、リストには 3 つの項目が含まれます。この関数は、指定された文字に基づいて文字列を実際に分割します。

于 2013-03-15T15:39:57.520 に答える
0

私はこの論理に従います:

各行について:

  • 先頭と末尾のスペースを削除します
  • 行をドットで分割する
  • 分割されたリストの最後の前の部分を取る

これにより、探している文の一部が得られるはずです。

于 2013-03-15T14:45:58.560 に答える