在Python中,如何从字符串末尾去掉逗号?
如何从字符串末尾去掉逗号?我试过了在Python中,如何从字符串末尾去掉逗号?,python,string,Python,String,如何从字符串末尾去掉逗号?我试过了 awk = subprocess.Popen([r"awk", "{print $10}"], stdin=subprocess.PIPE) awk_stdin = awk.communicate(uptime_stdout)[0] print awk_stdin temp = awk_stdin t = temp.strip(",") 还尝试了t=temp.rstrip(“,”),两者都不起作用 代码如下: uptime = subprocess.Pop
awk = subprocess.Popen([r"awk", "{print $10}"], stdin=subprocess.PIPE)
awk_stdin = awk.communicate(uptime_stdout)[0]
print awk_stdin
temp = awk_stdin
t = temp.strip(",")
还尝试了t=temp.rstrip(“,”)
,两者都不起作用
代码如下:
uptime = subprocess.Popen([r"uptime"], stdout=subprocess.PIPE)
uptime_stdout = uptime.communicate()[0]
print uptime_stdout
awk = subprocess.Popen([r"awk", "{print $11}"], stdin=subprocess.PIPE)
awk_stdin = awk.communicate(uptime_stdout)[0]
print repr(awk_stdin)
temp = awk_stdin
tem = temp.rstrip("\n")
logfile = open('/usr/src/python/uptime.log', 'a')
logfile.write(tem + "\n")
logfile.close()
这是输出:
17:07:32 up 27 days, 37 min, 2 users, load average: 5.23, 5.09, 4.79
5.23,
None
Traceback (most recent call last):
File "uptime.py", line 21, in ?
tem = temp.rstrip("\n")
AttributeError: 'NoneType' object has no attribute 'rstrip'
呃,那尊者呢:
if len(str) > 0:
if str[-1:] == ",":
str = str[:-1]
仔细想想,rstrip
本身应该可以正常工作,因此您从awk
中获得的字符串有些地方并不是您所期望的。我们需要看到这一点
我怀疑这是因为您的字符串实际上并没有以逗号结尾。运行时:
str = "hello,"
print str.rstrip(",")
str = "hello,\n"
print str.rstrip(",")
print str.rstrip(",\n")
输出为:
hello
hello,
hello
换句话说,如果字符串末尾有一个换行符和一个逗号,则需要将这两个字符都用,\n“
”隔开
好的,根据你的评论,以下是你正在尝试的:
uptime = subprocess.Popen([r"uptime"], stdout=subprocess.PIPE)
uptime_stdout = uptime.communicate()[0]
print uptime_stdout
awk = subprocess.Popen([r"awk", "{print $11}"], stdin=subprocess.PIPE)
awk_stdin = awk.communicate(uptime_stdout)[0]
print repr(awk_stdin)
temp = awk_stdin
tem = temp.rstrip("\n")
logfile = open('/usr/src/python/uptime.log', 'a')
logfile.write(tem + "\n")
logfile.close()
您从两个print
语句中实际得到了什么,以及日志文件中附加了什么
我的特定正常运行时间没有$11
:
23:43:10 up 5:10, 0 users, load average: 0.00, 0.00, 0.00
但你的可能不同
不过,我们需要查看脚本的输出。删除字符串末尾的所有逗号:
str = '1234,,,'
str = str.rstrip(',')
我想你会发现,awk\u stdin
实际上以一个换行符结尾(print repr(awk\u stdin)
来清楚地显示它),所以你需要在rstrip'ping逗号之前把它去掉(或者,你可以用RE同时做这两件事,但基本思想是逗号实际上不是该字符串中的最后一个字符!)当你说
awk = subprocess.Popen([r"awk", "{print $11}"], stdin=subprocess.PIPE)
awk_stdout = awk.communicate(uptime_stdout)[0]
awk = subprocess.Popen([r"awk", "{print $11}"], stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
awk_stdout = awk.communicate(uptime_stdout)[0]
然后将awk过程的输出打印到标准输出(例如终端)。
awk\u stdout
设置为None
awk\u stdout.rstrip('\n')
引发一个AttributeError
,因为None
没有名为rstrip
的属性
当你说
awk = subprocess.Popen([r"awk", "{print $11}"], stdin=subprocess.PIPE)
awk_stdout = awk.communicate(uptime_stdout)[0]
awk = subprocess.Popen([r"awk", "{print $11}"], stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
awk_stdout = awk.communicate(uptime_stdout)[0]
然后不向标准输出(例如,终端)打印任何内容,awk\u标准输出
将awk
命令的输出作为字符串。如果您有空白/非打印字符,请尝试以下操作:
a_string = 'abcdef,\n'
a_string.strip().rstrip(',') if a_string.strip().endswith(',') else a_string.strip()
省去了检查字符串长度和计算切片索引的麻烦
当然,如果不需要对不以逗号结尾的字符串执行任何不同的操作,则可以执行以下操作:
a_string.strip().rstrip(',')
你确定字符串的末尾只有,
?你能告诉我们temp
是什么吗?我的第一个猜测是,你的字符串不是以逗号结尾,而是以尾随的换行符结尾。你能发布awk的确切输出吗?当然,你不是在暗示内置方法停止工作了吗?不,但问题中缺少信息。我回答了“如何从字符串末尾去掉逗号?”uptime=subprocess.Popen([r“uptime”),stdout=subprocess.PIPE)uptime\u stdout=uptime.communicate()[0]print uptime\u stdout awk=subprocess.Popen([r“awk”,“{print$11}]”,stdin=subprocess.PIPE)awk\u stdin=awk.communicate(uptime\u stdout)[0]print repr(awk\stdin)temp=awk\u stdin tem=temp.rstrip(“\n”)logfile=open('/usr/src/python/uptime.log','a')logfile.write(tem+“\n”)logfile.close()这就是我试图做的事情。在平均负载之后,这个值一定是$8
,而不是$11
-如果你想解决这个问题,你真的需要发布脚本的输出。当更多的信息几乎肯定会指出问题的时候,我们猜测可能的错误对我们没有什么好处。我想你的意思可能是str.rstrip(',')
cool,行得通,awk=subprocess.Popen([r“awk”,{print$11}],stdin=subprocess.PIPE,stdout=subprocess.PIPE)@kris,我建议你接受这个答案+为了抓住它,~unutbu。