0

我有一个名为“asin.txt”的文件:

in,Huawei1,DE.FR.IT.UK
out,Huawei2,DE.FR.IT
out,Huawei3,FR
in,Huawei4,FR.IT
in,Huawei5,IT

我正在打开这个文件并制作一个 OrderedDict:

from collections import OrderedDict
reader = csv.reader(open('asin.txt','r'),delimiter=',')
reader1 = csv.reader(open('asin.txt','r'),delimiter=',')
d = OrderedDict((row[0], row[1].strip()) for row in reader)
d1 = OrderedDict((row[1], row[2].strip()) for row in reader1)

比我创建一个“for”循环:

from itertools import izip
for (a, b), (c, e) in izip(d.items(), d1.items()):
    """in the first time: a='in'; b='Huawei1'; c='Huawei1'; e='DE.FR.IT.UK'"""
    c1, c2, c3, c4 = c.split('.') # i'm cutting variable 'c'
    try:
       ...........

但是比 Python 给我一个错误:

 c1, c2, c3, c4 = c.split('.')
 ValueError: need more than 3 values to unpack

我知道为什么会出错,因为在“asin.txt”的第一行:

in,Huawei1,DE.FR.IT.UK

在第二次昏迷后,我有 4 个国家和地区,但在“asin.txt”的第二行

out,Huawei2,DE.FR.IT

在第二次昏迷后,我有 3 个国家。我有这个声明c1, c2, c3, c4 = c.split('.')

我怎样才能使程序每次都将c精确地切割为 asin.txt 中的国家/地区?

因此,例如在第一圈,它在第二圈切割 4 块,第二圈切割 3 块,第三圈切割 1 块......

4

1 回答 1

2

您可以将结果存储split为列表:

cList = c.split('.')

这样,c总是被“切割”成与 asin.txt 中的国家相同数量的片段。

于 2013-07-17T15:06:25.323 回答