Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取python中的多层csv文件_Python_List_File Io - Fatal编程技术网

读取python中的多层csv文件

读取python中的多层csv文件,python,list,file-io,Python,List,File Io,我需要从文本文件中读取以下数据 [L02] g,g,g,g,g,g,g,g,g,g,w,w,w,w,g,g g,g,g,g,g,g,g,g,g,w,w,w,w,w,g,g g,g,g,g,g,g,g,g,w,w,w,w,w,g,g,g g,g,g,g,g,g,g,g,w,w,w,w,g,g,g,g g,g,g,g,g,g,g,g,g,w,w,w,w,g,g,g g,g,g,g,g,g,g,g,g,g,w,w,w,w,g,g g,g,g,g,g,g,g,g,g,g,g,w,w,w,g,g g,g,

我需要从文本文件中读取以下数据

[L02]
g,g,g,g,g,g,g,g,g,g,w,w,w,w,g,g
g,g,g,g,g,g,g,g,g,w,w,w,w,w,g,g
g,g,g,g,g,g,g,g,w,w,w,w,w,g,g,g
g,g,g,g,g,g,g,g,w,w,w,w,g,g,g,g
g,g,g,g,g,g,g,g,g,w,w,w,w,g,g,g
g,g,g,g,g,g,g,g,g,g,w,w,w,w,g,g
g,g,g,g,g,g,g,g,g,g,g,w,w,w,g,g
g,g,g,g,g,g,g,g,g,g,g,w,w,g,g,g
g,g,g,g,g,g,g,g,g,g,g,w,w,g,g,g
g,g,g,g,g,g,g,g,g,g,w,w,w,g,g,g
g,g,g,g,g,g,g,g,g,w,w,w,g,g,g,g
g,g,g,g,g,g,g,g,w,w,w,w,g,g,g,g
g,g,g,g,g,g,g,w,w,w,w,g,g,g,g,g
g,g,g,g,g,g,g,w,w,w,g,g,g,g,g,g
g,g,g,g,g,g,w,w,w,w,w,g,g,g,g,g
g,g,g,g,g,g,g,w,w,w,w,g,g,g,g,g
[L01]
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
我可以将单个块作为csv文件读取,但我不知道如何将每个文件作为单独的列表读取

我想要的输出是为每个块提供数组/列表,其中块内容作为列表元素。有什么想法吗?

如果有,可以将文件读入numpy数组
comments='['
告诉
np.genfromtxt
忽略以
[
开头的行。
重塑
方法将每个16x16块放置在其自己的“层”中

您可以使用
arr[n]

访问第n层,如果有,您可以将文件读入一个numpy数组。
comments='['
告诉
np.genfromtxt
忽略以
[
开头的行。
重塑
方法将每个16x16块放在自己的“层”


您可以使用
arr[n]

访问第n层。下面是一个脚本,演示如何将问题分解为可重用的步骤(函数)并执行所需的转换

import itertools
import operator
import re
import csv
import pprint

class TaggedLine(str):
    """
    Override str to allow a tag to be added.
    """
    def __new__(cls, val, tag):
        return str.__new__(cls, val)

    def __init__(self, val, tag):
        super(TaggedLine, self).__init__(val)
        self.tag = tag

def sections(stream):
    """
    Tag each line of the stream with its [section] (or None)
    """
    section_pattern = re.compile('\[(.*)\]')
    section = None
    for line in stream:
        matcher = section_pattern.match(line)
        if matcher:
            section = matcher.group(1)
            continue
        yield TaggedLine(line, section)

def splitter(stream):
    """
    Group each stream into sections
    """
    return itertools.groupby(sections(stream), operator.attrgetter('tag'))

def parsed_sections(stream):
    for section, lines in splitter(stream):
        yield section, list(csv.reader(lines))

if __name__ == '__main__':
    with open('data.csv') as stream:
        for section, data in parsed_sections(stream):
            print 'section', section
            pprint.pprint(data[:2])
将文件另存为“data.csv”,脚本将使用以下输出在数据上运行:

section L02
[['g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'w',
  'w',
  'w',
  'w',
  'g',
  'g'],
 ['g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'w',
  'w',
  'w',
  'w',
  'w',
  'g',
  'g']]
section L01
[['d',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd'],
 ['d',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd']]

下面的脚本演示了如何将问题分解为可重用的步骤(函数)并执行所需的转换

import itertools
import operator
import re
import csv
import pprint

class TaggedLine(str):
    """
    Override str to allow a tag to be added.
    """
    def __new__(cls, val, tag):
        return str.__new__(cls, val)

    def __init__(self, val, tag):
        super(TaggedLine, self).__init__(val)
        self.tag = tag

def sections(stream):
    """
    Tag each line of the stream with its [section] (or None)
    """
    section_pattern = re.compile('\[(.*)\]')
    section = None
    for line in stream:
        matcher = section_pattern.match(line)
        if matcher:
            section = matcher.group(1)
            continue
        yield TaggedLine(line, section)

def splitter(stream):
    """
    Group each stream into sections
    """
    return itertools.groupby(sections(stream), operator.attrgetter('tag'))

def parsed_sections(stream):
    for section, lines in splitter(stream):
        yield section, list(csv.reader(lines))

if __name__ == '__main__':
    with open('data.csv') as stream:
        for section, data in parsed_sections(stream):
            print 'section', section
            pprint.pprint(data[:2])
将文件另存为“data.csv”,脚本将使用以下输出在数据上运行:

section L02
[['g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'w',
  'w',
  'w',
  'w',
  'g',
  'g'],
 ['g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'g',
  'w',
  'w',
  'w',
  'w',
  'w',
  'g',
  'g']]
section L01
[['d',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd'],
 ['d',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd',
  'd']]

哇,谢谢!我不希望看到完整的代码!我只需要格式化输出。再次感谢。TaggedLine可以更简单地使用namedtuple声明:
TaggedLine=namedtuple(“TaggedLine”,“line tag”)
。不确定继承自
str
能为您带来什么。继承自str意味着标记行仍然可用作字符串,因此您可以将其视为原始行(或行序列)。如果使用namedtuple,则处理序列的代码必须知道它得到的是一个元组而不是一个字符串,并相应地进行处理。在这个特定的示例中,元组可以很好地工作,但是由于
获取一个行流并生成一个行流,因此它更易于重用。哇,谢谢!我不希望整个元组都能工作e代码!我只需要格式化输出。再次感谢。可以使用namedtuple更简单地声明TaggedLine:
TaggedLine=namedtuple(“TaggedLine”,“line tag”)
。不确定继承自
str
能为您带来什么。继承自str意味着标记行仍然可用作字符串,因此您可以将其视为原始行(或行序列)。如果使用namedtuple,则处理序列的代码必须知道它得到的是一个元组而不是字符串,并相应地进行处理。在这个特定示例中,元组可能工作得很好,但由于
接受一个行流并生成一个行流,因此它更易于重用。