python处理文本信息
巴扎黑
巴扎黑 2017-04-17 17:50:50
0
1
281

有一个文本信息如下:

42 453926 Stormwriter restored undeleted 61.1.28.140
44 425968 61.1.28.140
42 425967 Mintguy restored undeleted 61.11.252.22
43 419840 61.11.252.22

我做的是需要根据第一列的这个序号的数据来找对应的数据,像这种有着相同序号的行,他们对应的第二列的ID数据就是对应的,我需要找到这样一对一对的 ID 数据。就这个例子来说就是 453926 跟 425967 是对应的,输出:

453926 425967

而也会有多个相同序号的情况。比如:

42 453926 Stormwriter restored undeleted 61.1.28.140
44 425968 61.1.28.140
42 425967 Mintguy restored undeleted 61.11.252.22
43 419840 61.11.252.22
42 419809 TimStarling

就是需要记录多次,而且是跟最后一个相同序号对应,拿这个例子来说,就是记录第一个42跟最后一个42的对应ID,然后同时也要记录中间那个 42 跟最后一个 42 的 ID,输出这样:

453926 419809(restored行的ID是453926)
425967 419809(restored行的ID是425967)

我开始想的是用字典,但是字典也就只能保留到最后一个相同的序号,怎么做才能让中间的相同序号也能输出对应的呢TUT

我的伪代码如下:

dict={}
if xxx: #只是一个判断处理的条件
   flag_number =line.split()[0]
   id = line.split()[0]
   next()
elif line.split()[0]==flag_number:
   dict[id]=line.split()[1]

但是这个代码只能输出第一个跟最后一个相同的序号,如何修改才能也让中间的相同序号跟最后一个序号也输出出来呢

巴扎黑
巴扎黑

全員に返信(1)
迷茫

辞書を使用することができます。まず以下を収集してください:

リーリー

出力:

リーリー

または:

リーリー

このコードについて少し教えてください:

リーリー

上記の行はジェネレーター式 (略して genexp) です。これはリスト内包表記に似ていますが、実際のデータとリストは反復処理されるか、値が取得されるまで待機するだけです。順次生成されます。これは、リソースの利用が比較的効率的であることを意味します。

ここで生成されるジェネレーターは、2 要素のタプルを順番に生成できます。両方の要素は ID であり、まさに ID ペアです (最初の要素はそれぞれ最後ではない ID、2 番目の要素は最後の ID です。

について:

リーリー

は ID ペアを順番に生成し、タプルアンパックを使用して sideid に並行して値を代入し、最終的に出力します。


data:

リーリー

結果:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート