用于导入具有固定长度字段的逗号分隔csv的Python脚本
我有一个带有逗号分隔字段的.csv文件。我从第三方收到此文件,内容无法更改。我需要将文件导入数据库,但在一些“逗号”分隔的字段中有逗号。逗号分隔的字段也是固定长度的-当我在functioninsert\u line\u csv中按照下面的行打印字段时,它们以固定长度间隔 我需要一种有效的方法来收集字段,字段中可能包含逗号。我希望把这两种方法结合起来。不确定这是否有效 我使用的是Python3——我愿意使用任何库来提高工作效率和简化工作 目前我有以下几点:用于导入具有固定长度字段的逗号分隔csv的Python脚本,python,csv,Python,Csv,我有一个带有逗号分隔字段的.csv文件。我从第三方收到此文件,内容无法更改。我需要将文件导入数据库,但在一些“逗号”分隔的字段中有逗号。逗号分隔的字段也是固定长度的-当我在functioninsert\u line\u csv中按照下面的行打印字段时,它们以固定长度间隔 我需要一种有效的方法来收集字段,字段中可能包含逗号。我希望把这两种方法结合起来。不确定这是否有效 我使用的是Python3——我愿意使用任何库来提高工作效率和简化工作 目前我有以下几点: with open(FileName,
with open(FileName, 'r') as f:
for count, line in enumerate(f):
insert_line_csv(count, line)
插入\u行\u csv函数如下所示:
def insert_line_csv(line_no, line):
line = line.split(",")
field0 = line[0]
field1 = line[1]
......
我正在导入行_no,因为它也被输入到数据库中
如有任何见解,将不胜感激
示例数据集:
text ,2000.00 ,2018-07-07,textwithoutcomma ,text ,1
text ,3000.00 ,2018-07-08,textwith,comma ,text ,7
text ,1000.00 ,2018-07-07,textwithoutcomma ,text ,4
如果逗号分隔的字段都是固定长度的,您应该能够通过计数将其拼接,而不是通过逗号拼接,请参阅 作为一个模型代码,你有
toParse = line
while (toParse != "")
chunk = first X chars of toParse
restOfLine = toParse without the chars just cut off
write chunk to db
toParse = restOfLine
那应该对我有用
编辑:
在看到示例数据集时。是否只能有一个字段内有逗号?如果是这样,您可以通过逗号拆分,读取前3个字段,然后读取最后两个字段。不管剩下什么,都要再次连接,因为它是第四个字段的值。(如果它有逗号,你需要在那里实际连接,如果没有,它已经是值了)数据样本在这里会有所帮助…从你的解释来看,它看起来是固定宽度的,没有逗号分隔的文件。这可能会有帮助:提供了一个样本数据集。似乎这可以通过只在字段宽度方向上进行来解决。这将是一个痛苦的认识。