1

私はこのようなテキストファイルを持っています

1;2;3;4
5;6;7;8

そして、私はそれを次のように変換したいと思います:

[[1,2,3,4],[5,6,7,8]]

Pythonを使用して、これをどのように達成できますか?*

4

5 に答える 5

8

以下を使用できます。

data = [[int(i) for i in line.split(';')] for line in open(filename)]

csvモジュールを使用する別の方法:

import csv
data = [[int(i) for i in ln] for ln in csv.reader(open(filename), delimiter=';')]

文字列のリストが受け入れられる場合:

data = [line.split(';') for line in open(filename)]

または同等のcsv:

data = list(csv.reader(open(filename), delimiter=';'))
于 2012-12-21T00:28:52.617 に答える
4

複数行の文字列として:

>>> s = """1;2;3;4
5;6;7;8"""

>>> [[int(x) for x in a.split(';')] for a in s.splitlines()]
[[1, 2, 3, 4], [5, 6, 7, 8]]
于 2012-12-21T00:32:02.307 に答える
3

あなたのデータはある種のCSVのようなデータのように見えるので、Pythonのcsv解析モジュールを使用してみませんか?これはエンコーディングを処理し、区切り文字をすべて無料でサポートします。

コードが必要な場合は、リスト内包表記を使用し、次のsplit方法を使用して分割しstrます。

result = [line.split(';') for line in text.split("\n")]
于 2012-12-21T00:31:50.497 に答える
3

'1;2;3;4'.split(';')[1, 2, 3, 4]文字列からリストを生成する'1;2;3;4'ので、ファイルの各行に対してそれを行う必要があります。

def split_lists(filepath, sep=';'):
    with open(filepath) as f:
        line_lists = []
        for line in f:
            line_lists.append(line.split(sep))
        return line_lists

またはよりコンパクトに理解して

def split_lists(filepath, sep=';'):
    with open(filepath) as f:
        return [line.split(sep) for line in f]
于 2012-12-21T00:31:55.537 に答える
0

興味深い質問をありがとう、2 つのマップと 1 つの for ループで解決できます

s='1;2;3;4\n5;6;7;8'
map(lambda seq: [int(i) for i in seq], map(lambda x:x.split(';'), s.split('\n')))
于 2012-12-21T02:08:26.263 に答える