回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>在Python中有很多关于JSON到CSV转换的问题,但是不幸的是不能解决我的问题。在</p>
<p>我有一个简单的JSON数据,它在一个文件中,加载后看起来像这样。在</p>
<p><strong>以单行形式显示的原始数据[我将其结构化以更好地理解]:</strong></p>
<pre><code>{
"t_id":"80740185.1558980000000.120184.121164",
"s_id":"80740185",
"pt_slot":"null:null",
"ch_id":1,"o_id":121164,"c_id":120184,
"msg_type":1,
"amd":"{
\"msg\":\" some Bengali text\",
\"mask\":\"1GB_OFFER\",
\"ec\":\"1\",
\"time-out\":\"0\",
\"validity\":\"30052019 000000\"
}",
"time":1558960217731,
"dlr":"1",
"msisdn":"xxxxx",
"entity":1
}
</code></pre>
<p>**加载到JSON后,格式化数据如下所示**</p>
^{pr2}$
<p>上面有一个非常简单的JSON数据,我正试图将其转换为CSV数据。但要低于错误。在</p>
<p><strong>这是我的代码</strong></p>
<pre><code>#!/usr/bin/python
import json
import csv
def write_sms_dat_to_csv_file():
f = csv.writer(open('csv_data.txt','wb+'),delimiter = '|')
with open('test.dat') as fh:
data = json.load(fh)
for dt in data:
f.writerow([dt['c_id'],dt['msisdn'],dt["amd"]["mask"]])
if __name__=="__main__":
write_sms_dat_to_csv_file()
</code></pre>
<p><strong>错误消息</strong></p>
<pre><code>Traceback (most recent call last):
File "./sms_data_read.py", line 16, in <module>
write_sms_dat_to_csv_file()
File "./sms_data_read.py", line 13, in write_sms_dat_to_csv_file
f.writerow([dt['c_id'],dt['msisdn'],dt['amd']['mask']])
TypeError: string indices must be integers
</code></pre>
<p>使用以下语句删除for循环会产生相同的错误:</p>
<pre><code>f.writerow([data['c_id'],data['msisdn'],data['amd']["mask"]])
</code></pre>