Python从字符串列表开始删除多行
我试图从一个文件中删除多行,其中的行以指定的字符串开头。 我试过使用下面的列表,但行写入文件的次数与列表中的项目相同。有些行被删除了,有些没有我很确定这是因为没有在正确的时间阅读下一行Python从字符串列表开始删除多行,python,csv,Python,Csv,我试图从一个文件中删除多行,其中的行以指定的字符串开头。 我试过使用下面的列表,但行写入文件的次数与列表中的项目相同。有些行被删除了,有些没有我很确定这是因为没有在正确的时间阅读下一行 trunklog = open('TrunkCleanedDaily.csv', 'r') fh = open("TCDailyFinal.csv", "w") firstletter = ['Queue,Completed', 'Outbound,', 'Red_
trunklog = open('TrunkCleanedDaily.csv', 'r')
fh = open("TCDailyFinal.csv", "w")
firstletter = ['Queue,Completed', 'Outbound,', 'Red_Team_DM,', 'Sunshine,', 'Agent,','Disposition,', 'Unknown,']
while True:
line = trunklog.readline()
if not line:
break;
for i in firstletter:
if line.startswith(i):
print('del ' + line, end='')
# line = trunklog.readline()
else:
fh.write(line)
print('keep ' + line,end='')
line = trunklog.readline()
非常感谢您对我的帮助
我试图删除的某些内容:
Queue,Completed,Abandons,Exits,Unique,Completed %,Not Completed %,Total Calls,
Green_Team_AMOne,93,0,0,0,100.00%,0.00%,8.04%,
Green_Team_DM,11,0,0,0,100.00%,0.00%,0.95%,
Green_Team_IVR,19,0,0,0,100.00%,0.00%,1.64%,
Outbound,846,131,0,0,86.59%,13.41%,84.44%,
Red_Team_AMOne,45,0,0,0,100.00%,0.00%,3.89%,
Red_Team_DM,3,0,0,0,100.00%,0.00%,0.26%,
Red_Team_IVR,5,0,0,0,100.00%,0.00%,0.43%,
Sunshine,4,0,0,0,100.00%,0.00%,0.35%,
Queue,Total Call Time,Average Call Time,Average Hold Time,Call Time %,None,
Green_Team_AMOne,32:29:06,20:57,00:10,42.92%,None,
Green_Team_DM,2:41:35,14:41,00:16,3.56%,None,
Green_Team_IVR,1:47:12,05:38,00:19,2.36%,None,
请尝试以下代码:
trunklog = open('TrunkCleanedDaily.csv', 'r')
fh = open("TCDailyFinal.csv", "w")
firstletter = ['Queue,Completed', 'Outbound,', 'Red_Team_DM,', 'Sunshine,', 'Agent,', 'Disposition,', 'Unknown,']
for line in trunklog:
cnt=0
for i in firstletter:
if line.startswith(i):
print('del ' + line, end='')
cnt=1
if not cnt:
fh.write(line)
print('keep ' + line, end='')
我对你的代码做了一点修改。
并添加了一个变量“cnt”,若第一个单词在firstletter列表中,则该变量将为1。
如果cnt=0,则它会将行写入新文件。您只需为
for
循环留下destine else语句,如果必须删除行,则添加break
trunklog=open('TrunkCleanedDaily.csv','r')
fh=打开(“TCDailyFinal.csv”,“w”)
firstletter=[“队列,已完成”,“出站”,“红色团队”,“阳光”,“代理”,“处置”,“未知”]
尽管如此:
line=trunklog.readline()
如果不是直线:
打破
因为我的第一个字母是:
如果第行从(i)开始:
打印('del'+行,结束='')
打破
其他:
fh.写入(行)
打印('保留'+行,结束='')
输出文件
Green_Team_AMOne,93,0,0,0,100.00%,0.00%,8.04%,
Green_Team_DM,11,0,0,0,100.00%,0.00%,0.95%,
Green_Team_IVR,19,0,0,0,100.00%,0.00%,1.64%,
Red_Team_AMOne,45,0,0,0,100.00%,0.00%,3.89%,
Red_Team_IVR,5,0,0,0,100.00%,0.00%,0.43%,
Queue,Total Call Time,Average Call Time,Average Hold Time,Call Time %,None,
Green_Team_AMOne,32:29:06,20:57,00:10,42.92%,None,
Green_Team_DM,2:41:35,14:41,00:16,3.56%,None,
Green_Team_IVR,1:47:12,05:38,00:19,2.36%,None,
在处理csv时,我建议使用库
csv
或pandas
,因为如果缺少一个分隔符,则出错的几率更高,并且操作csv数据更容易。另外,你可以上传文件内容和你想删除的内容吗?你跳过了几行。删除代码中的最后一行:line=trunklog.readline()。6当一个匹配列表项7时,没有匹配项。Yash,你是否建议我使用csv或pandas删除我不想要的行?