如何区分一个点和两个点的线?

时间:2013-03-15 14:37:56

标签: python python-2.7 distinguishedname

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

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我会遵循这个逻辑:

对于每一行:

  • 删除开头和结尾的所有空格
  • 用点划分线
  • 在分割列表的最后一个之前取得部分

这应该会为您提供您正在寻找的句子的一部分。

答案 2 :(得分: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)

答案 3 :(得分:0)

只需使用分割功能。

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

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