【问题标题】:Python: can't delete unwanted commas in a text filePython:无法删除文本文件中不需要的逗号
【发布时间】:2014-06-26 00:53:40
【问题描述】:

我有一个包含人员信息的 CSV 文件:

name,age,height

Maria,25,172

George,45,180,

Peter,23,179,

问题是一些字符串最后包含一个额外的逗号,而另一些则不包含(这是因为此信息是在另一个处理原始数据的 Python 脚本中使用 urlopen 从 Internet 获取的)。

我试图编写一些代码来解决这个问题,但我无法得到结果。我写的:

import re


data = open('file.csv').read()

new_data = re.sub('\W$', '', data)
print(new_data)

但此代码仅替换整个文档中的最后一个逗号。我试图写一个循环,计算所有行,然后分析每一行,但可能我的编码能力不是很好,我没有成功。请告诉我,我做错了什么。

【问题讨论】:

  • 您可以很容易地使用str.endswith(',')
  • 如果你确定逗号和行尾之间没有空格,你可以这样做:new_data = data.replace(',\n', '\n')
  • 如果您确定空字段仅出现在末尾,您可以使用[s for s in data.split(',') if len(s)]

标签: python regex csv


【解决方案1】:

问题是整个文件被当作字符串处理,$ 只匹配字符串的结尾。 你最好使用re.sub('\W\n', '\n', data)

您也可以不使用正则表达式:new_data = data.replace(',\n', '\n'),这可能更快。

【讨论】:

    【解决方案2】:

    这很简单,你真的不需要regex(而且它的可能更快不使用它)

    我会这样做:

    with open("file.csv", 'r') as f:
        newLines = [line[:-1] if line.endswith(",") else line for line in f.readlines()]
    

    那么你需要做的就是写回文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 2023-02-25
      • 2016-03-07
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      相关资源
      最近更新 更多