python:从主机字符串中剥离最后一个句点

时间:2013-02-18 23:18:35

标签: python regex replace

我很难弄清楚如何从主机名中删除最后一段时间......

当前输出:

  • domain.com。
  • suddomain.com。
  • domain.com。
  • subdomain.subdomain.com。
  • subdomain.com。

期望的输出:

  • domain.com
  • subdomain.com
  • domain.com
  • subdomain.subdomain.com

尝试1:

print string[:-1]  #it works on some lines but not all

尝试2:

 str = string.split('.')
 subd = '.'.join(str[0:-1])
 print subd    # does not work at all 

代码:

global DOMAINS

if len(DOMAINS) >= 1:
  for domain in DOMAINS:
    cmd = "dig @adonis.dc1.domain.com axfr %s |grep NS |awk '{print $1}'|sort -u |grep -v '^%s.$'" % (domain,domain)
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,   shell=True)
    string = p.stdout.read()
    string = string.strip().replace(' ','')
    if string:
      print string

3 个答案:

答案 0 :(得分:15)

你这样做:

hostname.rstrip('.')

其中hostname是包含域名的字符串。

>>> 'domain.com'.rstrip('.')
'domain.com'
>>> 'domain.com.'.rstrip('.')
'domain.com'

答案 1 :(得分:2)

正则表达式是:

(.+)\.

没有.的域现在位于捕获组1中。

答案 2 :(得分:-3)

我放弃了,而只是使用了sed ....

cmd = "dig @adonis.dc1.domain.com axfr %s |grep NS |awk '{print $1}' |sort -u |grep -v '^%s.$'|sed -e 's/.$//'"