去掉主机字符串末尾的句点
我在想办法去掉主机名最后的那个句号,但遇到了一些困难...
现在的输出结果是:
- 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 个回答
-3
我放弃了,直接用sed来处理了……
cmd = "dig @adonis.dc1.domain.com axfr %s |grep NS |awk '{print $1}' |sort -u |grep -v '^%s.$'|sed -e 's/.$//'"
1
@isedev 给出的答案在这个特定的情况下有点不完整。rstrip('.')
是用来去掉字符串末尾的句号,但通过 subprocess
返回的字符串后面会有一个换行符(0x0A),这个换行符会导致 rstrip('.')
无法正常工作。
这可能就是为什么提问者放弃了。
看看下面的 python3 代码:
print ('domain.'.rstrip('.'))
运行效果如预期。然而,添加一个换行符来模拟命令行输出:
print ('domain.\n'.rstrip('.'))
会打印出 domain.
解决这个问题的一种方法是在调用 rstrip()
之前先使用 strip()
:
print ('domain.\n'.strip().rstrip('.'))
这样打印出来的是:domain
记得,记得要处理好你的命令行输出哦 :)
25
你可以这样做:
hostname.rstrip('.')
这里的hostname是一个字符串,里面包含了域名。
>>> 'domain.com'.rstrip('.')
'domain.com'
>>> 'domain.com.'.rstrip('.')
'domain.com'