0

我想提取句子的特定部分。我的问题是我有一个句子列表,每个句子都有不同的格式。例如:

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

如何根据它们拥有的点数分割这些线?如果我希望句子的第二部分带有两个点,而句子的第一部分带有一个点

4

4 回答 4

2

您想要最后一个点之前的部分;只是在点上分开并取最后一部分:

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

我会遵循这个逻辑:

对于每一行:

  • 删除开头和结尾的所有空格
  • 用点分割线
  • 参加拆分列表的最后一个部分

这应该给你你正在寻找的句子的一部分。

于 2013-03-15T14:45:58.560 回答
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

更多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)
于 2013-03-15T15:03:06.843 回答
0

只需使用拆分功能。

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

这将列出 b 中的 2 个项目。如果您有两个点,则列表将包含 3 个项目。该函数实际上根据给定的字符拆分字符串。

于 2013-03-15T15:39:57.520 回答