検索

ホームページ  >  に質問  >  本文

python处理一个文本文件

这个文本文件核心有几种情况:
1.序号 ID 操作者 操作行为 操作行为 操作对象
6883 556773833 RemyMCMXI
6880 556772838 Mindmatrix restored undeleted RemyMCMXI
6882 556771715 RemyMCMXI
6881 556770863 RemyMCMXI
6880 556673938 Liua97
6879 554350969 Epicgenius
6880 554332653 Alex

找到restored所在行,得到该行序号6880,然后往下读,找到第一个与其序号相同的行(liua97那行),然后记录下这两行之间所有的id值(包括restored那行),这个例子就是记录下556772838 556771715 556770863这三个id。

2.序号 ID 操作者 操作行为 操作行为 操作对象
208 1675137 Netizen restored undeleted Netizen
207 1648639 Netizen
206 1648621 142.58.181.84
205 1646546 Patrick
204 1638165 Patrick

找到restored所在行,然而往下找不到这个restored行的序号208,这个时候就是读取undelted对象,然后往下找相邻的这个对象的操作者(一般情况下这个restored往下的相邻行的操作者这个对象)。比如这个例子就是记录1675137 1648639这两个id。

3.序号 ID 操作者 操作行为 操作行为 操作对象
153 1254853 Eloquence restored undeleted Eloquence
152 1254819 Eloquence
151 1254815 Eloquence
150 1254812 Eloquence
149 1254799 Eloquence
148 1254796 Eloquence
147 1254782 Eloquence
146 1254771 Eloquence
145 1254740 217.185.183.250

这个同样也是,restored所在行的序号153往下找找不到,然后undeleted的对象在下面连续出现,这个时候就是记录连续出现的所有行的id,就是1254853 819 815 812 799 796 783 771这几个id。

然后现在我对这样的处理没有什么思路,,文本文件的一行就是一个字符串 split的话那些没有包含restored的行就会出现数组越界。。。我就不知道该怎么处理了,求各位大神给个思路orz

PHP中文网PHP中文网2810日前393

全員に返信(1)返信します

  • 迷茫

    迷茫2017-04-17 17:44:39

    最初の状況については、次のメソッドを参照できます:

    Python3 以降を使用している場合:

    リーリー

    コードを少し説明します。open を使用して生成されたファイル オブジェクトは、readline を使用するよりも簡潔です。 for line in reader:

    さらに、

    はアンパックに使用され、number, ID, *items = line.split() で切り取られた文字列を番号 (最初の切り取り文字列) と ID (2 番目の切り取り文字列) に割り当て、最後にもう一方の切り取り文字列を割り当てます。文字列をリストに取り込み、それを line.split() (アスタリスクの付いた変数) に代入します。 items

    ただし、この使用法はすべての Python バージョンに適用できるわけではないため、Python2.7 を使用している場合は、次の方法を採用できます。

    リーリー

    このアプローチの考え方は非常に簡単です。

    フラグを設定して、行の ID を出力するか収集するかを決定します。次に、各行で flagnumber を使用して、flag_number をオンにするかオフにするかを決定する必要があります。 flag


    以下は Python3 のコードです。必要に応じて、

    を Python2 の使用法に変更してください。違いはここだけです。 (急いで書いたのでコードが洗練されていないかもしれません) print

    すべてのシナリオを考慮して、最初に 2 つのクラスが定義されます: ID を収集するための

    と、操作をオブジェクト化するための IdCollect : Action

    *

    クラスIdCollect リーリー

    *

    クラス:Action リーリー

    最後に使用するメソッドを示します:

    リーリー


    以下は私が走り書きしたテスト ファイルです:

    リーリー

    出力は次のようになります:

    リーリー

    返事
    0
  • キャンセル返事