python - 蟒蛇 | 如何将字符串添加到csv文件中的每一行?
问题描述
我正在尝试向 CSV 中的每一行添加一个“名称”字段。目前,我有一个数组,其中包含我要写入 CSV 的所有值。
我要添加的字段
diskimage_name = "name"
#Creating the Aarry
arr_gpsbe = [r.split(",") for r in [r for r in text.split("{;}")]]
#arr_gps.be: values to be written
GPS BE: [['171536396', '00000000000000000000000000000000', '2017-03-13T12/1 2/1 45/1', '51.5911', '-0.04806', '20.695', '0', ''], ['186839052', '00000000000000000000000000000000', '2017-03-13T12/1 2/1 45/1', '51.5411', '-0.0554806', '20.6495', '0', ''], ['261713932', '00000000000000000000000000000000', '2017-03-13T14/1 30/1 55/1', '51.547', '-0.06583', '19.3311', '0', ''], ['472133644', '00000000000000000000000000000000', '2018-02-13T12/1 2/1 47/1', '50.7414', '-1.8727', '3.5862', '0', ''], ['614559756', '00000000000000000000000000000000', '2018-02-13T12/1 3/1 0/1', '50.746', '-1.88712', '41.017', '0.32', ''], ['1249259520', 'f36baba228d0de8580380832d544d505', '2015-11-01T14/1 19/1 176/100', '51.508', '-0.096389', '26.0428', '0', ''], ['2296086528', '27f762ddb9443616987939a59ad7214d', '2016-08-22T11/1 26/1 10/1', '41.8994', '12.453', '28.0482', '0', ''], ['4045778956', '00000000000000000000000000000000', '2017-03-09T12/1 28/1 58/1', '51.411', '-0.03333', '18.3268', '0', ''], ['5446492172', '00000000000000000000000000000000', '2017-05-14T10/1 23/1 2644/100', '50.7371', '-1.289', '3.2384', '0.06631']]
#Csv Writer
fieldnames = 'Disk Location', 'Hash', 'Date', 'Latitude', 'Longitude', 'Somethingelse', 'other'
with open("C:\\ProgramData\\gps.csv", 'w', newline='', encoding="utf8") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(fieldnames)
writer.writerows(arr_gpsbe)
csvfile.close()
我试图让数据看起来像这样:
Disk Name Disk Location Hash Date Latitude Longitude Somethingelse other
Name 171536396 0 2017-03-13T12/1 2/1 45/1 51.5411 -0.0554806 20.6495 0
Name 186839052 0 2017-03-13T12/1 2/1 45/1 51.5411 -0.0554806 20.6495 0
Name 261713932 0 2017-03-13T14/1 30/1 55/1 51.5407 -0.0606583 19.3311 0
Name 472133644 0 2018-02-13T12/1 2/1 47/1 50.7414 -1.88727 39.5862 0
Name 614559756 0 2018-02-13T12/1 3/1 0/1 50.7416 -1.88712 41.0317 0.32
将“磁盘名称”字段添加到“arr_gps”数组的每个值是否更容易 IE
arr_gpsbe = diskimage_name.join()[r.split(",") for r in [r for r in text.split("{;}")]]
还是使用 csvwrtier 将其添加到每一行更好?
IE
writer.writerows(diskimage_name, arr_gpsbe)
解决方案
代替:
writer.writerows(diskimage_name, arr_gpsbe)
采用:
writer.writerows([[diskimage_name, *row] for row in arr_gpsbe])
或者,或者:
for row in arr_gpsbe:
writer.writerow([diskimage_name, *row])
如果您想避免创建整个数据集的另一个副本。
推荐阅读
- datagrip - 如何使 DataGrip 显示更多输出选项卡
- azure - Azure IoT 上的软件更新
- react-native - 添加 react-native-admob 模块后,React-Native 应用程序在启动时崩溃
- html - 将文本放在绝对定位 div 的中心
- node.js - Angular Swimlane Ngx 图表在 stackblitz 中无法在本地工作
- python - Pyqt4 模型视图 - 在表格模型中添加滑块、复选框线编辑
- python - 如何解决 Pandas Series to sql 存储错误?
- woocommerce - 在下拉列表中显示 Woocommerce 变化价格和库存状态
- java - 另一个事务删除延迟子项时的 JPA-Hibernate 行为
- internet-explorer - 本地存储在 IE 中无法清除