【问题标题】:Strip last period from a host string从主机字符串中删除最后一个句点
【发布时间】:2013-02-03 12:29:37
【问题描述】:

我很难弄清楚如何从主机名中删除最后一个句点...

当前输出:

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

想要的输出:

  • domain.com
  • subdomain.com
  • 域名.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

【问题讨论】:

  • 尝试 1 将适用于您的所有测试用例,您能否提供一个失败的示例?
  • 打印字符串[:-1] ...除了最后一个子域之外的所有子域都失败

标签: python regex replace


【解决方案1】:

你这样做:

hostname.rstrip('.')

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

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

【讨论】:

    【解决方案2】:

    我放弃了,只是用 sed 代替....

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

    【讨论】:

    • @isedev 为您提供了您正在寻找的答案(事实上,最简单的答案)。这应该是公认的答案。
    猜你喜欢
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    相关资源
    最近更新 更多