python - 从交互式片段创建 python 脚本
问题描述
我正在从我的 csv 文件中清除非分隔符逗号。我有 3 个 python 片段可以交互地更改分隔符、替换逗号并重新实例化逗号分隔符。重新测试后,我发现这个单个脚本不起作用,我想就在单个脚本中运行这些的最佳实践方法提供一些反馈。
#!/usr/bin/env python
# changes delimiter
import csv
reader = csv.reader(open("commas.csv", "rU"), delimiter=',')
writer = csv.writer(open("commas2.csv", 'w'), delimiter=';')
writer.writerows(reader)
quit()
# replaces commas with spaces
s = open("commas2.csv").read()
s = s.replace(',', ' ')
f = open("commas3.csv", 'w')
f.write(s)
f.close()
quit()
# changes delimiter back to commas
import csv
reader = csv.reader(open("commas3.csv", "rU"), delimiter=';')
writer = csv.writer(open("commas4.csv", 'w'), delimiter=',')
writer.writerows(reader)
quit()
解决方案
正如您所说,您需要使用with
语句正确关闭所有文件(您不需要,但这是最佳做法):
import csv
with open("commas.csv", "r") as fr:
with open("commas2.csv", "w") as fw:
reader = csv.reader(fr, delimiter=',')
writer = csv.writer(fw, delimiter=';')
writer.writerows(reader)
with open("commas2.csv", "r") as fr:
s = fr.read()
with open("commas3.csv", "w") as fw:
fw.write(s.replace(",", " "))
# changes delimiter back to commas
with open("commas3.csv", "r") as fr:
with open("commas4.csv", "w") as fw:
reader = csv.reader(fr, delimiter=';')
writer = csv.writer(fw, delimiter=',')
writer.writerows(reader)
但是您可以通过文件来执行此操作,因为您已经在内存中拥有所有 csv 内容,您可以逐个单元地修改它们,而不是用不同的分隔符保存它们,然后将分隔符更改回来:
import csv
with open("commas.csv", "r") as f:
reader = csv.reader(f)
new_data = [] # new csv 2d array
for line in reader:
l = list()
for cell in line: # go over every cell
l.append(cell.replace(",", " ")) # replace commas then save it to new array
new_data.append(l)
with open("commas2.csv", "w") as f:
writer = csv.writer(f)
writer.writerows(new_data)
推荐阅读
- amazon-web-services - 用户连接到另一个用户作为朋友关系 - AWS GraphQL 转换
- character-encoding - 如何在 BizTalk AS2 接收中使用“引用打印”内容传输编码?
- mysql - 无法获取特定用户组的资产负债表。我该怎么做
- php - 将自定义表单中的数据保存在 wordpress 数据库中
- ios - Facebook SDK:UINavigationController 没有成员“推送”
- reactjs - 在 React props 中解构 ES6
- python-3.x - For 循环中带有过滤器 boto3 的快照 id
- java - 使用线程时并发 RejectedExecutionException
- excel - 如何复制行并将它们粘贴到给定单元格值的工作表中
- javascript - Chart.js 压缩条形图上的垂直轴