【问题标题】:Remove Backslashes from Data with Python 2.7使用 Python 2.7 从数据中删除反斜杠
【发布时间】:2017-02-23 16:45:08
【问题描述】:

免责声明:我有大约 3 个月的编程经验......所以对于任何愚蠢的问题提前道歉。

我有一个 9GB 的 CSV 文件,我正在尝试使用 Python 2.7 进行清理

我需要删除/替换/剥离您想要调用的任何内容....所有“\”实例散布在数据中。

这是我迄今为止想出的:

#Python 2.7
csvfileIn = open("dataexample.csv", "r")
csvOut = open("dataexample2.csv", "w")
for i, row in enumerate(csvfileIn.readline()):
    row = row.replace("\"", "")
    csvOut.write(row)
csvOut.close()

这不会像我希望的那样遍历 CSV 文件。 有人建议我使用 readline() 而不是 readlines(),因为文件太大了。

我会附上示例数据文件,但我没有足够的街头信誉来附上文件。我想我发布的最后一个问题很愚蠢,所以我失去了一些代表点。 screenshot of example data

感谢您的帮助!

更新/固定代码

#Python 2.7
csvfileIn = open("dataexample.csv", "r")
csvOut = open("dataexample2.csv", "w")


for i, row in enumerate(csvfileIn):
    row = row.replace("\\", "")
    csvOut.write(row)


csvOut.close()
csvfileIn.close()

【问题讨论】:

  • enumerate(csvfileIn.readline()) 只会枚举文件的第一行。文件是可迭代的,所以只需使用enumerate(csvfileIn)

标签: python python-2.7 csv


【解决方案1】:

1) 替换row = row.replace("\"", "") row = row.replace("\\", "")

你应该转义反斜杠

2) 按照评论中Rawing 的建议,将enumerate(csvfileIn.readline()) 替换为enumerate(csvfileIn)

或者,如果您的代码中从未使用过i,只需通过for row in csvfileIn: 迭代文件

最后别忘了关闭csvfileIn

【讨论】:

  • 我收到“AttributeError: 'tuple' object has no attribute 'replace'”?我用我尝试过的代码和错误消息更新了我的原始问题。
  • @Tommy 如果你使用枚举。它是for i, row in enumerate(csvfileIn) 然后行是元组以外的字符串
  • @Tommy 将 for row in enumerate(csvfileIn): 替换为 for i, row in enumerate(csvfileIn):
  • 谢谢@Haifeng Zhang 和@Rawing!!!!我误解了你的解释,把“i”去掉了。对于那个很抱歉!!!非常感谢你帮助我。脚本现在像冠军一样工作!!!!!!
  • @Tommy 很高兴它有帮助:)
【解决方案2】:

使用双反斜杠

row.replace("\\", "")

\\ 双反斜杠表示字符串中的反斜杠

char 前面的单反斜杠表示特殊字符 ex: \n - 换行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    相关资源
    最近更新 更多