【问题标题】:Replace space with comma in loop在循环中用逗号替换空格
【发布时间】:2017-11-18 10:31:50
【问题描述】:

如何将包含空格的 csv 数据转换为逗号?

我的代码

import csv
from pprint import pprint

with open('flare.csv', 'rb') as f:
    reader = str(csv.reader(f))

    for row in reader.splitlines():
        print row

数据

value,id
1 aah
1 aan
3 acc
4 account
1 accounts
1 action
6 ada
3 ade
1 adik
2 admin

目标输出

value,id
1,aah
1,aan
3,acc
4,account
1,accounts
1,action
6,ada
3,ade
1,adik
2,admin

【问题讨论】:

  • 它只包含一个空格? str.replace(' ', ',') 怎么样?
  • print row.replace(" ", ",")
  • @JamesKPolk 在哪里可以替换它?
  • @IanMobbs 如何检查 python 对象中的值?

标签: python


【解决方案1】:

也可以使用csv 来编写列,只需更改分隔符:

import csv

with open('flare.csv', 'rb') as f_in, open("out_flare.csv", "wb") as f_out:
    reader = csv.reader(f_in, delimiter=" ")
    writer = csv.writer(f_out, delimiter=",")
    writer.writerows(reader)

与盲目替换字符相比,这会更安全,因为在某些情况下,您的 CSV 条目需要在它们周围添加引号。

【讨论】:

  • 哎呀!你说的对;除了命名之外,我的答案与您的答案完全相同,而我的答案是后来出现的……对不起! (我猜你是在拿副本开玩笑……)+1
  • @hiroprotagonist - '这是个笑话;)......顺便说一句。要添加一些有用的东西,在读取/写入 CSV 时应该始终使用二进制模式,这样底层操作系统就不会干扰新行。这是我们的答案之间的唯一区别:)
【解决方案2】:

您可以将delimiter=' ' 指定给reader 函数。

reader = csv.reader(f, delimiter=' ')

这里有描述https://docs.python.org/2/library/csv.html#csv-fmt-params

【讨论】:

  • ...为什么str(csv.reader(f))...不会返回任何有用的东西。
  • 对不起,不知何故我的编辑保存错误,我复制,保存,然后将 sugested 参数放在那里,但它没有显示出来。谢谢提醒。
【解决方案3】:

在这里一次一行你想要做的是:

line = line.split(" ")
line = line.join(",")

然后打印出这一行,它应该可以解决您的问题。第一部分用空格将行分隔成一个列表,然后第二部分将列表的各个部分重新组合成一个带有所需逗号的字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多