我有这段代码
with open ('ip.txt') as ip :
ips = ip.readlines()
with open ('user.txt') as user :
usrs = user.readlines()
with open ('pass.txt') as passwd :
passwds = passwd.readlines()
with open ('prefix.txt') as pfx :
pfxes = pfx.readlines()
with open ('time.txt') as timer :
timeout = timer.readline()
with open ('phone.txt') as num :
number = num.readline()
打开所有这些文件并将其加入此形状
result = ('Server:{0} # U:{1} # P:{2} # Pre:{3} # Tel:{4}\n{5}\n'.format(b,c,d,a,number,ctime))
print (result)
cmd = ("{0}{1}@{2}".format(a,number,b))
print (cmd)
我猜它会像这样打印
Server:x.x.x.x # U:882 # P:882 # Pre:900 # Tel:456123456789
900456123456789@x.x.x.x
但输出就像这样
Server:x.x.x.x
# U:882 # P:882 # Pre:900
# Tel:456123456789
900
456123456789@187.191.45.228
新输出: -
Server:x.x.x.x # U:882 # P:882 # Pre:900 # Tel:['456123456789']
900['456123456789']@x.x.x.x
我怎么能解决这个问题?
答案 0 :(得分:1)
您可能应该使用newline
删除strip()
实施例
with open ('ip.txt') as ip :
ips = ip.readline().strip()
readline()
将一次读取一行,其中readlines()
将整个文件作为行列表读取
答案 1 :(得分:0)
我猜你的有限例子是b
嵌入了换行符。这是因为readlines()
。这里使用的python习语是:ip.read().splitlines()
其中ip
是你的文件句柄之一。
答案 2 :(得分:0)
除了其他很好的答案之外,为了完整起见,我将使用string.translate
发布一个替代答案,如果有任何\n
或换行符被意外插入到您的中间字符串,如'123\n456\n78'
,它将涵盖使用rstrip
或strip
的角落案例。
服务器:x.x.x.x#U:882#P:882#上一个:900#电话:['456123456789']
900 [ '456123456789'] @ X.X.X.X
您知道这是因为您要打印一个列表,要解决此问题,您需要加入列表中的字符串number
总而言之,解决方案将是这样的:
import string
# prepare for string translation to get rid of new lines
tbl = string.maketrans("","")
result = ('Server:{0} # U:{1} # P:{2} # Pre:{3} # Tel:{4}\n{5}\n'.format(b,c,d,a,''.join(number),ctime))
# this will translate all new lines to ""
print (result.translate(tbl, "\n"))
cmd = ("{0}{1}@{2}".format(a,''.join(number),b))
print (cmd.translate(tbl, "\n"))