我可以在保持列表元素为字符串的情况下移除负值吗?

0 投票
2 回答
702 浏览
提问于 2025-04-17 04:16

我正在处理一个用制表符分隔的文本文件,里面有一些负数。我想忽略那些包含负数的行,只想把正数的行写到输出文件里。有没有办法用一个通配符来查找字符串中的“-”符号?如果可以的话,我希望不把列表转换成浮点数。

这是代码(目前还没有提到负数的部分):

    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:
            line = line.strip()
            lineList = line.split('\t')
            lineList = [line for line in lineList if line != '']
            #print lineList
            #print len(lineList)
            if len(lineList) == 9:
                #print lineList
            line = '\t'.join(lineList)
            line = line + '\n'
            outfile.write(line)
       infile.close()
       outfile.close()
    except IOError:
        print inputFileName, "does not exist."

我已经在别人的帮助下,清理掉了这个有九列的文件中的空值。现在我想去掉所有包含负数的行。

2 个回答

0

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。

有些时候,我们会遇到一些问题,比如数据格式不对,或者数据没有按照我们想要的方式出现。这就像是水桶的形状不一样,导致水倒不进去。

为了避免这些问题,我们可以使用一些工具和方法来确保数据能够顺利地从一个地方转移到另一个地方。这就像是使用漏斗来帮助我们把水倒得更顺利。

总之,处理数据时要注意格式和兼容性,这样才能让我们的程序运行得更顺利。

has_negative = any(float(n) < 0 for n in re.findall(r'\-?\d+', line))
1

你可以在你的脚本中使用一种叫做正则表达式的工具,来过滤掉那些以“-”开头的内容,这样在输出的时候就不会显示它们。或者,你也可以把这个脚本的所有输出结果通过一个叫做grep的命令来处理,加上“-v”选项,这样就能去掉任何包含负号的行。

撰写回答