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

删除Python中CSV单元格的一部分,python,csv,Python,Csv,我最近偶然发现了一项任务,它使用了一些CSV文件,至少可以说,这些文件组织得非常糟糕,一个单元格中应该包含多个单独的列。我想在Python脚本中使用这些数据,但想知道是否可以删除行的一部分(在某个点之后全部删除),然后将其写入字典 data = {} with open("./test.txt") as f: for i, line in enumerate(f.read().split("\n")): csv_line = line

我最近偶然发现了一项任务,它使用了一些CSV文件,至少可以说,这些文件组织得非常糟糕,一个单元格中应该包含多个单独的列。我想在Python脚本中使用这些数据,但想知道是否可以删除行的一部分(在某个点之后全部删除),然后将其写入字典

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
虽然我无法显示CSV的确切内容,但它看起来是这样的:

useful. useless useless useless useless
我知道这很可能需要一个正则表达式或一个带有语句的
endswith,但我无法对CSV文件执行所有这些操作。此外,CSV上有用后写的句号也应删除,并且不是打字错误。

实际答案 好的,然后请注意,您可以像对列表一样对字符串使用索引。例如,
“这是一个很长的字符串,但我们只需要前4个字母”[:4]
给出
“这”
。如果我们现在重新计算点的索引,我们可以得到你想要的。确切地说,字符串具有
索引
方法。因此,总的来说,你会:

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的库。不过,在深入研究
pandas
之前,最好先熟悉一下python。我认为一个好的开始是。使用
pandas
您的任务将如下所示

import pandas as pd
pd.read_csv("./test.txt", comment=".")
给你所谓的数据帧。

实际答案 好的,然后请注意,您可以像对列表一样对字符串使用索引。例如,
“这是一个很长的字符串,但我们只需要前4个字母”[:4]
给出
“这”
。如果我们现在重新计算点的索引,我们可以得到你想要的。确切地说,字符串具有
索引
方法。因此,总的来说,你会:

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的库。不过,在深入研究
pandas
之前,最好先熟悉一下python。我认为一个好的开始是。使用
pandas
您的任务将如下所示

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

提供所谓的数据帧。

如果知道要拆分的字符,可以使用以下简单方法:

good_data = bad_data.split(".")[0] 
good_data = good_data.strip() # remove excess whitespace at start and end
这种方法总是有效的
split
将返回一个元组,该元组始终至少有一个条目(完整字符串)。使用
索引
可能引发异常

您还可以使用
split(“.”,N)
限制必要时发生的拆分次数


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

good_data = bad_data.split(".")[0] 
good_data = good_data.strip() # remove excess whitespace at start and end
这种方法总是有效的
split
将返回一个元组,该元组始终至少有一个条目(完整字符串)。使用
索引
可能引发异常

您还可以使用
split(“.”,N)
限制必要时发生的拆分次数


你如何区分什么是有用的/无用的有点不清楚。您希望删除出现一个字符(即“.”后的所有内容,还是删除固定数量字符/单词后的所有内容?@user2640045我希望删除“.”字符后的所有内容。很抱歉没有澄清。你到底想在词典中怎样保存这些信息?你如何区分哪些有用/无用有点不清楚。您希望删除出现一个字符(即“.”后的所有内容,还是删除固定数量字符/单词后的所有内容?@user2640045我希望删除“.”字符后的所有内容。对不起,没有澄清。你到底想把它放在字典里吗