我想提取句子的特定部分。我的问题是我有一个句子列表,每个句子都有不同的格式。例如:
X.y.com
x.no
x.com
y.com
z.co.uk
s.com
b.t.com
如何根据它们拥有的点数分割这些线?如果我希望句子的第二部分带有两个点,而句子的第一部分带有一个点
我想提取句子的特定部分。我的问题是我有一个句子列表,每个句子都有不同的格式。例如:
X.y.com
x.no
x.com
y.com
z.co.uk
s.com
b.t.com
如何根据它们拥有的点数分割这些线?如果我希望句子的第二部分带有两个点,而句子的第一部分带有一个点
您想要最后一个点之前的部分;只是在点上分开并取最后一部分:
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
更多pythonic方式来解决您的问题:
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 个项目。如果您有两个点,则列表将包含 3 个项目。该函数实际上根据给定的字符拆分字符串。