为什么空字符串没有从列表中被移除?

2024-06-23 03:35:19 发布

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

我正在尝试格式化一个制表符分隔的txt文件,该文件包含行和列。我试图在写入输出文件时忽略其中有空值的行。我是通过len(list)方法来实现的,如果列表的长度等于列数,那么这一行就被写入输出文件。但是当我检查这些线的长度时,它们都是一样的,即使我去掉了空字符串!非常令人沮丧。。。在

我的代码是:

    import sys, os

    inputFileName = sys.argv[1]
    outputFileName = os.path.splitext(inputFileName)[0]+"_edited.txt"

    try:
        infile = open(inputFileName,'r')
        outfile = open(outputFileName, 'w')
        line = infile.readline()
        outfile.write(line)
        for line in infile:
        lineList = line.split('\t')
        #print lineList
        if '' in lineList:
              lineList.remove('')
        #if len(lineList) < 9:
              #print len(lineList)

              #outfile.write(line)
        infile.close()
        #outfile.close()
    except IOError:
        print inputFileName, "does not exist."

谢谢你的帮助。当我在交互窗口中创建一个实验列表并在列表中使用if“”时,它会删除它。当我运行代码时,“”仍然存在!在


Tags: 文件代码txt列表lenifossys
3条回答

由于strip()调用,以下代码用更少的代码行完成了您的要求,并删除了任何类型的空白行。在

#!/usr/bin/env python

import sys, os

inputFileName = sys.argv[1]
outputFileName = os.path.splitext(inputFileName)[0]+"_edited.txt"

try:
    infile = open(inputFileName,'r')
    outfile = open(outputFileName, 'w')

    for line in infile.readlines():
        if line.strip():
            outfile.write(line)

    infile.close()
    outfile.close()
except IOError:
    print inputFileName, "does not exist."

编辑: 为了清楚起见,这将读取输入文件的每一行,然后去掉前导空格和尾随空格(制表符、空格等)并将非空行写入输出文件。在

我不认识任何python,但我可以说你似乎没有检查空格字符。那么\r\n在\t的顶部呢?为什么不尝试修剪行并检查它是否=''

我认为您的一个问题是^{}只删除了元素的第一次出现。你的列表中可能还有更多的空字符串。根据文件:

Remove the first item from the list whose value is x. It is an error if there is no such item.

对于remove all the empty strings from your list,您可以使用列表理解来代替。在

lineList = [x for x in lineList if x]

或带有标识函数的^{}(通过传递None作为第一个参数):

^{pr2}$

相关问题 更多 >

    热门问题