0

これは、私がほぼ完了した課題のためのものです。したがって、目標は、txt ファイルの各行の最初の値である CID に基づいてリストを検索できるようにすることです。

テキスト ファイルには次のレコードが含まれており、タブで区切られています。

0001    001 --  --  1234.00 --  --  148.08  148.08  13.21   1395.29
0002    011 --  100.00  12000.00    --  5.00    1440.00 1445.00 414.15  13959.15
0003    111 100.00  1000.00 1000.00 8.00    50.00   120.00  178.00  17.70   2295.70
0004    110 1200.00 100.00  --  96.00   5.00    --  101.00  6.15    1407.15
0005    101 100.00  --  1300.00 8.00    --  156.00  164.00  15.60   1579.60
0006    100 1200.00 --  --  96.00   --  --  96.00   5.40    1301.40
0007    010 --  1500.00 --  --  75.00   --  75.00   2.25    1577.25
0008    001 --  --  1000.00 --  --  120.00  120.00  9.00    1129.00
0009    111 1000.00 1000.00 1000.00 80.00   50.00   120.00  250.00  28.50   3278.50
0010    111 100.00  10000.00    1000.00 8.00    500.00  120.00  628.00  123.90  11851.90

テキストファイルはこちらにあります。

私は Python を初めて使用し、まだ理解できていません。lines[0]何らかの形で他のインデックス位置を動的に埋めることができる必要があります。たとえば... '0002' はインデックス [0] で見つかり、変更するlines[1]と 0002 が見つかります。私はさまざまなwhile、列挙、リストの理解を試みましたが、そのほとんどは私の理解を超えています。または、特定の「顧客」の行を表示する簡単な方法はありますか?

   with open('customer.txt', 'r') as file:

        for line in file:
            lines = file.read().split('\n')
    search = input("Please enter a CID to search for: ")

    if search in lines[0]:
        print(search, "was found in the database.")
        CID = lines[0]
        print(CID)
    else:
        print(search, "does not exist in the database.")
4

3 に答える 3

0

別のアプローチ。ファイルはタブ区切りになっているため、csvモジュールも使用できます。

このアプローチは、@ gnibbler の回答とは異なり、ファイル全体を読み取り、その内容を検索します (ファイルをメモリにロードします)。

import csv

with open('customer.txt') as file:
   reader = csv.reader(file, delimiter='\t')
   lines = list(reader)

search = input('Please enter the id: ')
result = [line for line in lines if search in line]
print '\t'.join(*result) if result else 'Not Found'
于 2013-05-26T04:42:11.787 に答える