如何从tx中的某些行的末尾删除额外的分号

2024-06-26 04:54:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来stackoverflow,所以如果我的帖子没有正确张贴或你需要更多的信息,请让我知道。所以我有个很奇怪的问题。我有一个txt文件,有很多行用“;”隔开。通常应该有42个字段/列,但是由于某种原因,当导入时,我的txt文件中的一些行被“;”分隔,它显示了大量被跳过的行,因为python“预期42个字段,saw45”。我使用pandas导入文件,因为我的大部分转换都是用它完成的:

text = pd.read_csv('file.txt',encoding='ISO-8859-1', keep_default_na=False,error_bad_lines=False, sep=';')

我发现有些行的末尾多了3个“;”。因为大部分数据都是保密的,我不能在公司外共享,所以我生成了一个类似的3行txt文件来告诉你我的问题所在。你知道吗

;;;5123123;text1;text2;;;;123124;text3;text4;;;;5234234;text5;text6;;;;412321;text7;text8;;;;512312;text9;text10;;;;15123213;text11;text12;;;;123123;text13;text14 ;;;4666190;text1;text2;;;;312312;text3;text4;;;;5123123;text5;text6;;;;;;;;;;;;;;;;;;;;;;55123;text7;text8 ;;;5123123;text1;text2;;;;1321321;text3;text4;;;;123124;text5;text6;;;;;;;;;;;;;;;;;;;;;;3123123;512312312;text7;;;

所以这是我文件中类似的三行,但是有替换的名字。第一行和第二行是正确的,但是第三行在导入时生成45个字段。 那么有没有一种方法可以让我在导入文件之前检查一下文件,查找以;;;5123123开头的所有行,并检查结尾是否有“;”,是否有删除它们,然后当然导入它们。问题只出现在一些以;;;5123123开头的行上。这个错误有几百行,整个数据比50k行多一点。你知道吗


Tags: 文件数据txt信息falsestackoverflow帖子text1
2条回答

你有没有试过拆分成一个列表,然后删除空白元素??你知道吗

f = open('file.txt', 'rb')
raw_str = str(f.read())
full_list = raw_str.split(';')
templist = list(filter(None, full_list))

通过打印templast,它给出了所有元素的列表。您可以根据需要使用for循环对其执行任何操作,如再次转换为字符串。输出就像- enter image description here

我相信pd是pandas,所以可以为read_csv方法使用usecols参数

text = pd.read_csv('file.txt',
                   encoding='ISO-8859-1', 
                   keep_default_na=False,
                   error_bad_lines=False,
                   sep=';',
                   usecols=list(range(43)),
                   names=list(range(43)),
                   headers=None)

编辑 还可以添加namesheaders参数

相关问题 更多 >