0

「アドレスファイル」

100 Main Street 
23  Spring Park Road 
2012 Sunny Lane 
4 Martin Luther King Drive 

「アドレスリスト」

    [['100', 'Main', 'Street'],
 ['23', 'Spring Park', 'Road'], 
 ['2012', 'Sunny', 'Lane'],
 ['4', 'Martin Luther King', 'Drive']]

numbers_file = open("address_file.txt", "r")
def load_addresses(numbers_file):
    addresses = [] # <-- Create a list for sublist
    for line in numbers_file:
        address = [] # <-- Create a sublist 
        parts = line.split() # <-- split into lists by whitespace
        address.append(parts[0]) # <--- I know this will take first elements of the            lists and appended (back of the list) to sublist. 
        name = '' # <--- name to attach such as 'Spring' 'Park' into 'Spring'
        for i in range(1, len(parts) - 1): # <--- Why is the range like this? is it because we ignore first element since its already in good form and since its index we -1?
            name += parts[i] + ' ' # <--- ??
            address.append(name.strip()) # <--- I guess this is to wipe out whitespace front and back 
            address.append(parts[-1]) # <---???
            addresses.append(address) # <--- append the sublist into list

    return addresses

その横に置い???たのは紛らわしい部分です。誰かがそれらを明確にしてもらえますか?

4

2 に答える 2

1
def line_split(line):
    ls = line.split()
    return [ls[0],' '.join(ls[1:-1]), ls[-1]]

with open(datafile) as fin:
    address_list = [ line_split(line) for line in fin ]
    #address_list = map(line_split,fin) # would also work too.

行でマークされた質問を説明するには:

for i in range(1, len(parts) - 1):

これはリスト内のインデックスをループしますが、最初と最後のインデックスをスキップします。これを行うためのより慣用的な方法は次のとおりです。

for part in parts[1:-1]:

その後、ループの後半でにparts[i]置き換えます。part

name += parts[i] + ' ' # <--- ??

これは、それとを取りname、追加します。つまり、次のいずれかと同じです。parts[i]' '

name = name + parts[i] + ' '
name = "%s%s "%(name,parts[i])
name = "{0}{1} ".format(name,parts[i])

と行:

address.append(parts[-1]) # <---???

パーツリストの最後の部分をリストに追加しaddressます。

于 2012-12-09T04:14:19.020 に答える
0

おそらくこれが役立ちます:

>>> line = '100 Main Street'
>>> parts = line.split()
>>> name = ''
>>> len(parts)-1
2
>>> for i in range(1,2):
...    print parts[i] + ' '
...    print parts[-1]
...
Main # <-- there is an extra space here after 'Main'
Street
于 2012-12-09T04:46:01.420 に答える