简体   繁体   English

使用标准 csv.reader 方法拆分 CSV 文件

[英]Split CSV file using standard csv.reader method

For example, my CSV file contains 4 lines:例如,我的 CSV 文件包含 4 行:

CREATE TABLE test(col_name VARCHAR2(30) NOT NULL, col_name_2 INTEGER DEFAULT 0
 NOT NULL);
CREATE TABLE test2(col_name VARCHAR2(30) NOT NULL, col_name_2 INTEGER DEFAULT 0
 NOT NULL);

I'd like to split it by ";"我想用“;”分割它in order to have 2 elements in the list.为了在列表中有 2 个元素。 Can I do that using the standard csv.reader method?我可以使用标准的 csv.reader 方法做到这一点吗? I know that I can use the Pandas.read_csv method.我知道我可以使用 Pandas.read_csv 方法。

My current code:我目前的代码:

with open("my_file.csv", newline='', encoding="utf8") as csvfile:
    reader = csv.reader(csvfile)

You could do:你可以这样做:

with open("my_file.csv", "r", newline='', encoding="utf8") as csvfile:
    lines = csvfile.read().strip().rstrip(";").replace("\n", "").split(";")

Result:结果:

['CREATE TABLE test(col_name VARCHAR2(30) NOT NULL, col_name_2 INTEGER DEFAULT 0 NOT NULL)',
 'CREATE TABLE test2(col_name VARCHAR2(30) NOT NULL, col_name_2 INTEGER DEFAULT 0 NOT NULL)']

I hope this solves your problem because the split ';'我希望这能解决您的问题,因为拆分 ';' works for fields but not in your case.适用于字段,但不适用于您的情况。

import csv
with open("file.csv",encoding="utf8") as csvfile:
reader = csv.reader(csvfile)
count = 1
rows = []
for row in reader:
    if count % 2 == 0 :
        row1.append(" ".join(row))
        rows.append(" ".join(row1))
        row1 = []
    else:
        row1 = row
    count = count + 1
print(rows)

output:输出: 在此处输入图片说明

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

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