0

私のファイル:

Offices 10
MedicalOffice 15
PostOffice 30
Mall 200

2番目の列のみを読み取るようにpythonを作成するにはどうすればよいですか。取得のように:

10
15
30
200

名前の代わりに、10、15、30などの読み取り専用にする方法をおそらく試しました。名前なしでこれを試しましたが、うまくいきます。しかし、テキストファイルに名前を含める必要があります。何か助けはありますか?ありがとう

def something(file1):
    with file1 as f:
        nums = [int(line) for line in f]
        print("Read from File: ", nums)


textFileName = input("Enter the filename: ")
file1 = open(textFileName)
something(file1)

ありがとうございました。

4

3 に答える 3

3

2 番目の列を読み取るには、行を分割して 2 番目のフィールドを取得します。

[x.split()[1] for x in open(textFileName,"r")]

数値が必要な場合は、int を呼び出すだけです。

[int(x.split()[1]) for x in open(textFileName,"r")]
于 2013-10-09T01:54:01.607 に答える
2

2 列目だけを読むことはできません。

ただし、両方の列を読み取り、最初の列を無視して、2 番目の列のみを使用することができます。

例えば:

def something(file1):
    with file1 as f:
        lines = (line.partition(' ') for line in f)
        nums = [int(line[-1]) for line in lines)
        print("Read from File: ", nums)

partition新しい部分 ( ) と既に持っている部分( )を見やすくするために、これを 2 つのステップで行いましたint。必要に応じて、すべてを単一の listcomp に詰め込むことができます。

        nums = [int(line.partition(' ')[-1]) for line in f]

とにかく、partition最初のスペースで各行を分割するので、例えば('Offices', ' ', '10'). は[-1]最後の部分である'10'. そして、intあなたがすでに知っている があります。

于 2013-10-09T01:53:50.400 に答える
1

@Nirkの回答に似ていますが、ファイル処理が改善されています:

with open('/path/to/file.txt', 'r') as f:
    nums = [x.strip().split()[-1] for x in f]
于 2013-10-09T02:00:52.870 に答える