文の特定の部分を抽出したい。私の問題は、それぞれが異なる形式の文のリストを持っていることです。例えば:
X.y.com
x.no
x.com
y.com
z.co.uk
s.com
b.t.com
ドットの数に基づいてこれらの線を分割するにはどうすればよいですか?文の2番目の部分に2つのドットを付け、文の最初の部分に1つのドットを付けたい場合
文の特定の部分を抽出したい。私の問題は、それぞれが異なる形式の文のリストを持っていることです。例えば:
X.y.com
x.no
x.com
y.com
z.co.uk
s.com
b.t.com
ドットの数に基づいてこれらの線を分割するにはどうすればよいですか?文の2番目の部分に2つのドットを付け、文の最初の部分に1つのドットを付けたい場合
最後のドットの直前の部分が必要です。点を分割して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
質問に答えるには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)
単純に分割機能を使用します。
a = 'x.com'
b = a.split('.')
これにより、bの2つのアイテムのリストが作成されます。ドットが 2 つある場合、リストには 3 つの項目が含まれます。この関数は、指定された文字に基づいて文字列を実際に分割します。
私はこの論理に従います:
各行について:
これにより、探している文の一部が得られるはずです。