【问题标题】:Replace column separation of # with comma or tab用逗号或制表符替换 # 的列分隔
【发布时间】:2014-04-29 09:00:18
【问题描述】:

这个问题可能非常简单易行。 我的数据文件的列用 # 分隔,而不是制表符或逗号。 如: 123#142#5#98#......

在这种格式下,当我尝试读取某一行的一列中的值时,似乎无法读取 123 或 142 的整个值。

您是否有任何解决此问题的想法,例如将 # 更改为真正的分隔符,如制表符或逗号?

我将非常感谢任何帮助或想法。

谢谢你, 艾萨克

【问题讨论】:

  • 你现在读的怎么样?你能提供你的代码吗?你能准确解释一下它是如何不起作用的吗?

标签: python tabs comma separator


【解决方案1】:

阅读时,您可以使用csv.reader(),它采用delimiter 参数,如下所示:

>>> with open(your_file, "r") as f:
...    data = [x for x in csv.reader(f, delimiter='#')]
...
>>>

当你写作时,csv.writer() 接受相同的参数..

>>> with open("foo.txt", "w") as f:
...    w = csv.writer(f, delimiter=',')
...    w.writerows(data)
...
>>>

这是一个组合示例:

>>> with open("test.csv", "r") as inp, open("foo.csv", "w") as out:
...     w = csv.writer(out, delimiter=",")
...     w.writerows(x for x in csv.reader(inp, delimiter="#"))
...
>>>

test.csv的内容:

123#142#5#98
foo#bar#baz#baf

foo.csv的内容:

123,142,5,98
foo,bar,baz,baf

【讨论】:

  • 谢谢 msvalkon,对于迟到的感谢,我深表歉意。
  • @Isaac 不用担心,很高兴能为您提供帮助。如果有帮助,您可以accept my answer
  • 我还有一个问题。我想读取一个用逗号分隔的整个值。但是我只能通过使用 line = f.readlines() 并打印 line[0][0] 来读取整个值的一部分,例如 1 of 123。你对此有任何想法吗?谢谢。
  • @Isaac 你应该打开一个新问题,我可以在那里更详细地回答。
  • 谢谢你的回答,我想我可以解决这个问题。无论如何,我感谢您的帮助。
【解决方案2】:

那么你有数据

    data ='123#142#5#98#1234'
    data_list=data.split('#')

    for each_element in data_list:
           print each_element

【讨论】:

  • 谢谢你的ceasif,我也会试试这个解决方案。
猜你喜欢
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 2013-03-22
  • 2011-03-06
相关资源
最近更新 更多