为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中删除 CSV 单元格的一部分

在 Python 中删除 CSV 单元格的一部分

UYOU 2023-12-09 16:00:19
我最近偶然发现了一项利用一些 CSV 文件的任务,至少可以说,这些文件的组织非常糟糕,一个单元格包含多个单独的列。我想在 Python 脚本中使用这些数据,但想知道是否可以删除该行的一部分(在某个点之后的所有行),然后将其写入字典。虽然我无法显示 CSV 的确切内容,但它看起来像这样:useful. useless useless useless useless我知道这很可能需要正则表达式或语句endswith,但对 CSV 文件执行所有这些操作超出了我的能力范围。此外,CSV 上有用的句点也应删除,这不是拼写错误。
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

实际答案

好吧,请注意,您可以像对列表一样对字符串使用索引。即"this is a very long string but we only want the first 4 letters"[:4]给出"this". 如果我们现在新的点的索引,我们就可以得到你想要的东西。正是因为字符串有该index方法。所以总共你会做:


stuff = "useful. useless useless useless useless"

stuff = stuff[:stuff.index(".")]

现在的东西非常有用:)。如果我们正在讨论包含多行的文件,您可以为每一行执行此操作。将该行拆分,并将所有内容放入字典中。


data = {}

with open("./test.txt") as f:

    for i, line in enumerate(f.read().split("\n")):

       csv_line = line[:line.index(".")]

       for j,col in enumerate(csv_line.split(",")):

            data[(i,j)] = col

如何做到这一点

请注意,大多数人不想手动完成此操作。处理表格数据是一项常见任务,有一个名为 pandas 的库可以完成此任务。也许在深入了解 Python 之前先熟悉一下 Python 是个好主意pandas。我认为这是一个很好的起点。使用pandas你的任务看起来像这样


import pandas as pd

pd.read_csv("./test.txt", comment=".")

给你所谓的数据框。


查看完整回答
反对 回复 2023-12-09
?
青春有我

TA贡献1784条经验 获得超8个赞

如果您知道要分割的角色,可以使用以下简单的方法:


good_data = bad_data.split(".")[0] 

good_data = good_data.strip() # remove excess whitespace at start and end

这个方法永远有效。split将返回一个元组,该元组始终至少有 1 个条目(完整字符串)。使用index可能会抛出异常。


如果需要,您还可以使用 来限制将发生的拆分数量split(".", N)。


https://docs.python.org/2/library/stdtypes.html#str.split


>>> "good.bad.ugly".split(".", 1)

['good', 'bad.ugly']

>>> "nothing bad".split(".")

['nothing bad']

>>> stuff = "useful useless"

>>> stuff = stuff[:stuff.index(".")]

ValueError: substring not found


查看完整回答
反对 回复 2023-12-09
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信