Python从字符串列表开始删除多行

2024-10-06 08:06:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个文件中删除多行,其中的行以指定的字符串开头。 我试过使用下面的列表,但行写入文件的次数与列表中的项目相同。有些行被删除了,有些没有我很确定这是因为没有在正确的时间阅读下一行

    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,

Tags: 文件nonereadlinetimequeuelinegreenred
2条回答

如果必须删除一行,只需为for循环留下destinelse语句并添加break

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='')
            break
    else:
        fh.write(line)
        print('keep ' + line,end='')

输出文件

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,

请尝试以下代码:

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,则它将向新文件写入行

相关问题 更多 >