去掉Python字符串末尾的0

2 投票
6 回答
655 浏览
提问于 2025-04-15 16:47
#!/usr/bin/env python
import os, sys, subprocess, time
while True:    
    print subprocess.call("xsel", shell=True);
    time.sleep(1);

这个程序每秒从剪贴板获取一条内容并打印出来。

结果:

copied0
entry0
from0
clipboard0

我不知道为什么它最后会返回0,但这似乎让我无法使用字符串的去空格功能(整数是没有去空格的),所以这个0让字符串变成了整数?

怎么才能把上面结果中的字符串最后的0去掉呢?

我之前是用BASH写脚本,现在想转到Python。

6 个回答

2

看起来它在运行“xsel”,这个程序会把结果打印到标准输出(stdout),然后再把返回代码(0)打印到标准输出。你并没有从Python中获取到剪贴板的结果。

你可能需要使用subprocess.popen,并且要捕获标准输出。

4

编辑: subprocess.call 返回的不是字符串,而是一个整数——你看到的那个 0(在 xsel 实际输出之后)。可以改用:

print subprocess.Popen('xsel', stdout=subprocess.PIPE).communicate()[0]
4

正如Mark所说,subprocess.call()并不能满足你的需求。

你可以试试下面这样的写法:

#!/usr/bin/env python
import os, sys, subprocess, time
while True:
    p=subprocess.Popen(["xsel"],stdout=subprocess.PIPE)
    print p.stdout.read()
    time.sleep(1)

撰写回答