-1

国とオペレーターに一致させる必要がある電話番号でデータを分析しています。次の形式で電話番号のプレフィックスの国と宛先 (都市/オペレーター) のマッピングを受け取りました。

Country, Destination, Country Code, Destination Code, Remarks
AAA, Some Mobile, 111, "12, 23, 34, 46",Some remarks
AAA, Some city A, 111, "55, 56, 57, 51", Some more remarks
BBB, Some city B, 222, "234, 345, 456", Other remarks

ここのデータはダミーデータですが、実データも同じ形式です。「Destination Code」列には多くの値があります。そのため、このファイルをデータベース内で使用するのに適した形式に変換したいと考えています。

私が考えたのは、それを以下に示す形式に変換することです。

Country, Destination, Combined Code, Remarks
AAA, Some Mobile, 11112, Some remarks
AAA, Some Mobile, 11123, Some remarks
AAA, Some Mobile, 11134, Some remarks
AAA, Some Mobile, 11146, Some remarks
etc..

これにより、より単純なマッピング テーブルを作成できます。このようなデータを処理する最善の方法は何ですか? この変換のために bash シェル スクリプトまたは python でコードを記述するにはどうすればよいですか?

4

1 に答える 1

1
>>> data = [['Country', 'Destination', 'Country Code', 'Destination Code', 'Remarks'],
... ['AAA', 'Some Mobile', '111', '12, 23, 34, 46','Some remarks'],
... ['AAA', 'Some city A', '111', '55, 56, 57, 51', 'Some more remarks'],
... ['BBB', 'Some city B', '222', '234, 345, 456', 'Other remarks']]
>>> 
>>> op=[data[0]]
>>> for i in data[1:]:
...    for j in i.pop(3).split(','):
...       op.append([k+j.strip() if i.index(k)==2 else k for k in i])
... 

>>> for i in op:
...    print i
... 
['Country', 'Destination', 'Country Code', 'Destination Code', 'Remarks']
['AAA', 'Some Mobile', '11112', 'Some remarks']
['AAA', 'Some Mobile', '11123', 'Some remarks']
['AAA', 'Some Mobile', '11134', 'Some remarks']
['AAA', 'Some Mobile', '11146', 'Some remarks']
['AAA', 'Some city A', '11155', 'Some more remarks']
['AAA', 'Some city A', '11156', 'Some more remarks']
['AAA', 'Some city A', '11157', 'Some more remarks']
['AAA', 'Some city A', '11151', 'Some more remarks']
['BBB', 'Some city B', '222234', 'Other remarks']
['BBB', 'Some city B', '222345', 'Other remarks']
['BBB', 'Some city B', '222456', 'Other remarks']

更新された問題の解決策:

>>> data = [['Country', 'Destination', 'Country Code', 'Destination Code', 'Remarks'],
...  ['AAA', 'Some Mobile', '111', '12, 23, 34, 46','Some remarks'],
...  ['AAA', 'Some city A', '111', '55, 56, 57, 51', 'Some more remarks'],
...  ['BBB', 'Some city B', '222', '234, 345, 456', 'Other remarks']]
>>>  
>>> op=[data[0]]
>>> for i in data[1:]:
...    for id,j in enumerate(i.pop(3).split(',')):
...       k=i[:]
...       k.insert(3,i[2]+j.strip())
...       op.append(k)
... 
>>> for i in op:
...    print i
... 
['Country', 'Destination', 'Country Code', 'Destination Code', 'Remarks']
['AAA', 'Some Mobile', '111', '11112', 'Some remarks']
['AAA', 'Some Mobile', '111', '11123', 'Some remarks']
['AAA', 'Some Mobile', '111', '11134', 'Some remarks']
['AAA', 'Some Mobile', '111', '11146', 'Some remarks']
['AAA', 'Some city A', '111', '11155', 'Some more remarks']
['AAA', 'Some city A', '111', '11156', 'Some more remarks']
['AAA', 'Some city A', '111', '11157', 'Some more remarks']
['AAA', 'Some city A', '111', '11151', 'Some more remarks']
['BBB', 'Some city B', '222', '222234', 'Other remarks']
['BBB', 'Some city B', '222', '222345', 'Other remarks']
['BBB', 'Some city B', '222', '222456', 'Other remarks']
于 2014-11-09T10:25:15.093 に答える