繁体   English   中英

分隔符号本身在项目中时,Python读取CSV文件问题

[英]Python read CSV file issue when the delimiter symbol itself is in the item

我正在尝试使用csv.reader()将txt文件(逗号分隔符)读入CSV。 但是因为我的定界符(,)有时位于对象/项目中,所以读取项目的整个“行”都会移动。

例:

input.txt中:

Stevenson Corp, 123 Main St, 3 employees\n
Johnson Inc, 456 Main St, 5 employees\n

将导致CSV列为:

Stevenson Corp | 123 Main St | 3 employees
Jonson Inc | 456 Main St | 5 employees

但是,如果我的input.txt文件在要定界的项目中有(,),则会出现问题,例如:

input_bad.txt:

Stevenson Corp, 123 Main St, 3 employees\n
Johnson, Inc, 456 Main St, 5 employees\n #notice the comma before Inc

会导致错误的CSV列分为:

Stevenson Corp | 123 Main St | 3 employees #3 columns 
Jonson | Inc | 456 Main St | 5 employees #4 columns (issue)

我想不出任何解决方案,以使Jonson,Inc保持不被“,”分隔符分开。

我的代码如下打开txt文件和csv:

inputfile = open(os.path.join(somelocation, somefile.txt), "r", encoding="utf-8", errors="replace")

csv_data = csv.reader(inputfile, delimiter = ",")

请帮忙。

最好的办法是要回去和改变分隔符在文件从,到一些更明智的,但如果这不是一个选项,所以你可以做这样的东西作为一种解决方法:

import csv
with open(os.path.join(somelocation, somefile.txt), "r", encoding="utf-8", errors="replace") as inputfile:
    spamreader = csv.reader(inputfile, delimiter='¬')
    for row in spamreader:
        new_row = row.rsplit(",", 2)
        print("|".join(new_row))

这将使用文本中未显示的delimer,因此不会拆分任何行(因此您可以使用inputfile.readlines()进行读取),然后使用rsplit拆分最右边的两个逗号来创建列

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM