2

質問: リストから最初の単語を削除して、という名前の新しいリストに追加しcar_list、残りを別のリストに追加する方法を教えてくださいother_list

other_list残りを辞書に入れています

ファイルを読み取ると、次のようなものが得られます

data_file = ['1911 Overland OctoAuto', '1913 Scripps-Booth Bi-Autogo','1920 Briggs and Stratton Flyer'

car_list = [] other_list = []

次のように結果を取得するにはどうすればよいですか

car_list = [Overland, Scripps-Booth, Briggs]

other_list = [1911,OctoAuto, 1913, Bi-Autogo, 1920, and Stratton flyer]

これが私が持っているものです

data_file = open("facts.txt", 'r')


def clean_list(data_file):
    new_list =[]
    clean_list =[]
    car_list = []
    other_list = []
    D = {}
    for i in data_file:
        new_list = data_file.split('\n') #change split by new line or word

    clean_list = [(x.strip(' ')) for x in new_list]
    car_list = (clean_list.strip().split(' ')[2:], ' ') 
    other_list = dict(zip(keys, values))# Just an example
    return car_list

car_list = clean_list(data_file)

と思いましたcar_list = (clean_list.strip().split(' ')[2:], ' ')

動作しますが、次のエラーが発生します。

car_list = (clean_list.lstrip().split(' ')[2:], ' ')

AttributeError: 'list' object has no attribute 'split'

AttributeError: 'list' object has no attribute 'lstrip'

スプライシングでうまくいくと思ったが、ダイスは出ない。

私は試しcar_list = clean_list.split(' ',2)[2]てみましたが何も印刷しません

何か案は?ファイルが確実に読み取られていることは知っていますが、ここで何をすべきかわかりません。

4

3 に答える 3

5

あなたへの私の警告は、それother_listは異なるタイプのデータが混在しているように見えるということです. それは通常賢明ではありません。その免責事項で、ここに試みがあります:

data_file = ['1911 Overland OctoAuto', 
             '1913 Scripps-Booth Bi-Autogo',
             '1920 Briggs and Stratton Flyer']

car_list = []
other_list = []
for entry in data_file:
    year, make, model = entry.split(' ',2)
    car_list.append(make)
    other_list.append(year)
    other_list.append(model)

print car_list
>>>> ['Overland', 'Scripps-Booth', 'Briggs']
print other_list
>>>> ['1911', 'OctoAuto', '1913', 'Bi-Autogo', '1920', 'and Stratton Flyer']
于 2013-03-28T21:19:33.143 に答える
1

最終的には、正規表現を使用して文字列を分割することもできます。

import re
data_file = ['1911 Overland OctoAuto', 
             '1913 Scripps-Booth Bi-Autogo',
             '1920 Briggs and Stratton Flyer']

car_list = []
other_list = []
delimiter_space = re.compile(' ')
for entry in data_file:
    year, make, model = delimiter_space.split(entry,maxsplit=2)
    car_list.append(make)
    other_list.append(year)
    other_list.append(model)

print car_list
>>>> ['Overland', 'Scripps-Booth', 'Briggs']
print other_list
>>>> ['1911', 'OctoAuto', '1913', 'Bi-Autogo', '1920', 'and Stratton Flyer']
于 2013-03-28T21:21:55.390 に答える
1
T = [x.split(' ', 2) for x in data_file]
car_list = [ x[1] for x in T]
other_list =  [ v for x in T for v in x if v != x[1]]
print car_list
print other_list

出力

['Overland', 'Scripps-Booth', 'Briggs']
['1911', 'OctoAuto', '1913', 'Bi-Autogo', '1920', 'and Stratton Flyer']
于 2013-03-28T21:48:44.860 に答える