在Python的行尾打印一个字符

在Python的行尾打印一个字符,python,Python,我正在拆分一个选项卡分隔的日志文件,并将其写入另一个文件。对于代理行。拆分“\t”[9]我想在开头和结尾加上双引号。下面是我如何用两种方法完成的。但在输出文件中,结束引号打印在下一行的开头。我尝试了不同的方法,但仍然没有得到预期的结果。希望你能理解我的问题 #method 01 agent = '"'+(line.split('\t')[9])+'"' #method 02 agent = ''.join(('"',line.split('\t')[9],'"')) fo.write(ip +

我正在拆分一个选项卡分隔的日志文件,并将其写入另一个文件。对于代理行。拆分“\t”[9]我想在开头和结尾加上双引号。下面是我如何用两种方法完成的。但在输出文件中,结束引号打印在下一行的开头。我尝试了不同的方法,但仍然没有得到预期的结果。希望你能理解我的问题

#method 01
agent = '"'+(line.split('\t')[9])+'"'
#method 02
agent = ''.join(('"',line.split('\t')[9],'"'))

fo.write(ip + ' ' + '-' + ' ' + '-' + ' ' + time +' ' + method + ' ' + status + ' ' + '0' + ' ' + referrer + ' ' + agent)
输出

120.151.224.62 - - [26/Nov/2012:23:59:59 -0600] "GET /comworks/default.asp" 200 0 "" "Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+Trident/5.0)
"101.2.186.21 - - [27/Nov/2012:00:00:01 -0600] "GET /online/2/2/22002.aspx" 200 0 "https://www.example.com/online/2/2/22001.aspx" "Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/537.11+(KHTML,+like+Gecko)+Chrome/23.0.1271.64+Safari/537.11
"101.2.186.21 - - [27/Nov/2012:00:00:01 -0600] "GET /online/Handlers/ImageHandler.ashx" 200 0 "https://www.exsample.com/online/2/2/22002.aspx" "Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/537.11+(KHTML,+like+Gecko)+Chrome/23.0.1271.64+Safari/537.11
预期产量

120.151.224.62 - - [26/Nov/2012:23:59:59 -0600] "GET /comworks/default.asp" 200 0 "" "Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+Trident/5.0)"
101.2.186.21 - - [27/Nov/2012:00:00:01 -0600] "GET /online/2/2/22002.aspx" 200 0 "https://www.exsample.com/online/2/2/22001.aspx" "Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/537.11+(KHTML,+like+Gecko)+Chrome/23.0.1271.64+Safari/537.11"
101.2.186.21 - - [27/Nov/2012:00:00:01 -0600] "GET /online/Handlers/ImageHandler.ashx" 200 0 "https://www.exsample.com/online/2/2/22002.aspx" "Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/537.11+(KHTML,+like+Gecko)+Chrome/23.0.1271.64+Safari/537.11"
线条


你的线,当分裂时,不可能有一个指数上升到9,他们不适合我。但无论如何,看起来您的行被新行“\n”隔开,因此当您访问列表中的最后一个元素时,您也在访问新行

你可以做:

agent = '"'+(line.split('\t')[9]).rstrip('\r\n')+'"'
另外,最后一行不需要所有的连接。您可以将其简化为:

fo.write(ip + ' - - ' + time + ' ' + method + ' ' + status + ' 0 ' + referrer + ' ' + agent)
甚至:

fo.write("{0} - - {1} {2} {3} {4} 0 {5} {6}".format(ip, time, method, status, referrer, agent)

这可能无法直接回答您的问题,但您是否考虑过使用Python字符串格式?%或新的.format方式将使您的格式更易于阅读和修改

大概是

"%s - %s %s %s %s" % (ip, time, method, status, agent)

它说我想在开头和结尾加上双引号,这意味着双引号应该是字符串的一部分。@Haidro:我试过这个……agent=line。拆分'\t'[9]它只打印不带引号的字符串?@NilaniAlgiriyage什么是line?你能不能再加一句example@Haidro:我在问题中添加了行,因为它很清楚?@Haidro:还有一件事,我对日期时间等做了一些格式化。请忽略它们:您的行可能在结尾包含一个新行,\n您尚未删除。因此,它将作为您加入的字符之一包含。
"%s - %s %s %s %s" % (ip, time, method, status, agent)