python - 打开 .csv 文件编辑一个字段,写回 .csv 文件
问题描述
所以我有一个包含名称、纬度、经度和电话号码的 .csv 文件;用逗号分隔。我需要打开文件,将电话号码编辑为更清晰的格式,然后将其写回文件。
编辑电话号码有一个很好的解决方案在这里
不太确定解决此问题的最佳方法。任何帮助是极大的赞赏。谢谢。
import csv
def phone_format(n):
return format(int(n[:-1]), ",").replace(",", "-") +n[-1]
with open('sample.csv', 'rU') as csvfile:
spotreader = csv.reader(csvfile)
spotwriter = csv.writer(csvfile)
for row in spotreader:
spotwriter.writerow([0] + phone_format(spotreader[1]))
这不起作用。不太确定如何获得我想要的东西。
下面是我的 csv 文件示例
Jason Schow,,5016098648
Dena VanGorder,,6074621816
Lindsey McNabb,3066533971,3066505001
Jeff Wozniak,3066531566,3069420647
Victoria Norton,3067692840,3067697062
Benjie Butikofer,3067692107,3067697108
Jessica Duede,,3062813158
Pete Vogeh,3063776261,3069890349
Melissa Kwasney,,3069412583
我在下面寻找的 .csv 文件的输出类型:
Jason Schow,,501-609-8648
Dena VanGorder,,607-462-1816
Lindsey McNabb,306-653-3971,306-650-5001
Jeff Wozniak,306-653-1566,306-942-0647
Victoria Norton,306-769-2840,306-769-7062
Benjie Butikofer,306-769-2107,306-769-7108
Jessica Duede,,306-281-3158
Pete Vogeh,306-377-6261,306-989-0349
Melissa Kwasney,,306-941-2583
解决方案
你不应该在行上格式化,而不是spotreader吗?这对我从 .csv 文件中读取它很有效。我添加了一个忽略空字符串的检查。由于您没有以写入模式打开文件,因此 spotwriter 也无法工作。'rU' 仅是读取模式。你想要做的是制作一个全新的 .csv 文件并在其中写入输出,如下所示:
import csv
def phone_format(n):
return format(int(n[:-1]), ",").replace(",", "-") +n[-1]
with open('sample.csv', 'rU') as csvfile:
with open('sampleOutput.csv', 'w') as csvfile2:
spotreader = csv.reader(csvfile)
spotwriter = csv.writer(csvfile2)
for row in spotreader:
if row[1] != '':
spotwriter.writerow([row[0], phone_format(row[1]), row[2]])
else:
spotwriter.writerow([row[0], row[1], row[2]])
输入是您的 .csv 文件。
输出:
Jason Schow,,5016098648
Dena VanGorder,,6074621816
Lindsey McNabb,306-653-3971,3066505001
Jeff Wozniak,306-653-1566,3069420647
Victoria Norton,306-769-2840,3067697062
Benjie Butikofer,306-769-2107,3067697108
Jessica Duede,,3062813158
Pete Vogeh,306-377-6261,3069890349
Melissa Kwasney,,3069412583
这是假设你只想编辑第一个电话号码,如果你也想编辑第二个电话号码,你将不得不做一些额外的编程。
推荐阅读
- visual-studio-code - 从 Visual Studio 代码中排除 C# 编译器警告
- php - 我无法在 Slim 3 中上班/上班
- c# - NHibernate 中的 QueryOver
- r - spatstat 从点模式和随后的点中删除标记
- c++ - 可以访问类数据成员并在析构函数中对它们执行操作吗?
- sql - SQL Server 触发器卡在执行中
- datatrigger - Fancybox3:如何在保持数据触发器属性的同时在单个页面上创建单独的画廊?
- javascript - 如何将字符串数学运算符即“+”转换为数学运算符即+
- acumatica - Acumatica。我们如何将自己的图标添加到现代 UI?
- typescript - 如何扩展@types/express 请求接口?