如何在Python中从读取文件中删除空分隔符?

如何在Python中从读取文件中删除空分隔符?,python,input,split,emptydatatext,Python,Input,Split,Emptydatatext,这是我的输入文件示例(z.txt) 我将字母和数字存储在单独的列表中。这是数字列表的输出 #输出:['''6',''6','35','25','10'] [“7”、“7”、“28”、“29”、“2”] 由于文件的创建方式,当存在单个数字时,输出会有额外的空间。是否仍有清除“”的方法(空白)?您可以利用过滤器和无作为函数: numbers = ['', '7', '', '7', '28', '29', '', '2'] numbers = filter(None, numbers) print

这是我的输入文件示例(z.txt)

我将字母和数字存储在单独的列表中。这是数字列表的输出 #输出:['''6',''6','35','25','10'] [“7”、“7”、“28”、“29”、“2”]


由于文件的创建方式,当存在单个数字时,输出会有额外的空间。是否仍有清除“”的方法(空白)?

您可以利用
过滤器
作为函数:

numbers = ['', '7', '', '7', '28', '29', '', '2']
numbers = filter(None, numbers)
print numbers

看看这里的实际情况:

我想有很多方法可以做到这一点。我更喜欢使用正则表达式,尽管如果您有一个包含数万行的大型输入文件,这可能会比较慢。对于较小的文件,这是可以的

几点:

  • 使用上下文管理器(
    语句)打开文件。当
    with
    语句结束时,文件将自动关闭

  • re.findall()
    的替代方法是
    re.match()
    re.search()
    。后续代码将略有不同

  • org
    sequence
    numbers
    是相关的元素,我建议您维护一个3元素元组列表。当然,您必须缓冲org字段,并在获得下一行时将其添加到元组列表中

    import re
    
    org = []
    sequence = []
    numbers = []
    
    with open('ddd', 'r') as f:
        for line in f.readlines():
            line = line.strip()
            if re.search(r'^>', line):
                org.append(line)
            else:
                m = re.findall(r'^([A-Z]+--)\s+(.*)\s+', line)
                if m:
                    sequence.append(m[0][0])
                    numbers.append(map(int, m[0][1].split())) # convert from str to int
    
    print(org, sequence, numbers)
    

  • 如果您的输入如下所示:

    >>> li=[' 6  6  35  25  10', ' 7 7 28  29 2']
    
    只需使用
    .split()
    ,它将重复的空白作为单个分隔符处理:

    >>> [e.split() for e in li]
    [['6', '6', '35', '25', '10'], ['7', '7', '28', '29', '2']]
    
    vs
    .split(“”)


    您可以只使用
    sq.split()
    ,它将连续的空格视为一个分隔符,这样您就不会得到空白字符串来摆脱。。。
    >>> [e.split() for e in li]
    [['6', '6', '35', '25', '10'], ['7', '7', '28', '29', '2']]
    
    >>> [e.split(" ") for e in li]
    [['', '6', '', '6', '', '35', '', '25', '', '10'], ['', '7', '7', '28', '', '29', '2']]