python - 打开 .csv 文件编辑一个字段,写回 .csv 文件

标签 python csv formatting

所以我有一个包含名称、纬度、经度和电话号码的 .csv 文件;用逗号分隔。我需要打开文件,将电话号码编辑为更清晰的格式,然后将其写回到文件中。

编辑电话号码有一个很好的解决方案 Here

不太确定解决此问题的最佳方法。任何帮助是极大的赞赏。谢谢。

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

假设您只想编辑第一个电话号码,如果您还想编辑第二个电话号码,则必须进行一些额外的编程。

关于python - 打开 .csv 文件编辑一个字段,写回 .csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50379453/

相关文章:

python - 如何同时熔化 2 根柱子?

java - 我在使用此代码将 csv 转换为 json 架构时收到此错误

python - Python Pandas 中的引擎 read_csv

java - 如何忽略 Transformer 格式化 xml Java

python - 将列表转换为字符串

Python:更改字符串列表中所有元素的格式

python - 将 Pandas hub_table 子图绘制到 matplotlib 图中创建一个新图

python - 如何让这个 python 脚本遍历目录树?

mysql - 将 .csv 导入 MySQL 时如何跳过中间行

python - 使用变量作为保存文件名 ~ im.save(type, '.png' )