-1

我是 python 编程的新手。有人可以建议一些方法来执行以下操作:

整个数据存储在一个文件中并来自 . 而且我不能打乱顺序。

我想提取链的第一个和最后一个节点。有几个这样的链。数据内容以千兆字节为单位。

我对如何在 python 中进行处理一无所知。有人可以提供帮助吗?

4

2 回答 2

1

我不确定您的序列是如何工作的,尤其是如何选择开始和结束元素。所以我所做的基本上是我设置了一个起始值,然后匹配一次,然后它试图一遍又一遍地找到相同的值。

首先,我为数据制作了一个生成器。正如您所提到的,您有很多数据,因此您可能会有某种用于行的顺序生成器。我用产生示例行的静态生成器模拟了这一点:

>>> def dataReader():
        yield 'a1=hi'
        yield 'b1=hello'
        yield 'a1=how'
        yield 'b1=to'
        yield 'a1=hello'
        yield 'b1=python'
        yield 'a1=format'
        yield 'b1=computer'
        yield 'a1=python'
        yield 'b1=good programming language'

然后我设置了一个空列表,它将保存结果和最后一个元素,该元素被初始化为起始值

>>> lst = []
>>> last = 'hi' # as we want to begin with 'hi' which does not have a duplicate?

接下来我遍历数据,用等号分割并比较最后一个值。我正在使用该值None来标记先前的值已经找到它的重复项。为了让它更简单一点,我key现在完全忽略了,但是如果您需要确保在匹配新值时前一个键与当前键不同,您可以轻松添加更多条件。

>>> for line in dataReader():
        key, value = line.split('=')
        if last == None:
            lst.append(line)
            last = value
        elif last == value:
            lst.append(line)
            last = None
>>> lst
['a1=hi', 'b1=hello', 'a1=hello', 'b1=python', 'a1=python', 'b1=good programming language']
于 2012-06-17T14:17:29.973 回答
0

首先查看“列表”是什么,例如。

data[0]=hi
data[1]=hello
data[2]=how
data[3]=to
data[4]=hello
data[5]=python
data[6]=format
data[7]=computer
data[8]=python
data[9]=good programming language

或者

多维列表,具体取决于您的数据。

data[0][0]=hi
data[0][1]=hello
data[0][2]=how
data[0][3]=to

data[1][0]=hello
data[1][1]=python
data[1][2]=format
data[1][3]=computer
data[1][4]=python
data[1][5]=good programming language
于 2012-06-17T14:09:28.950 回答