You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用标准csv.reader方法按分号拆分CSV文件中的SQL语句?

能否用标准csv.reader按分号拆分CSV中的SQL语句?

很遗憾,标准的csv.reader没办法直接帮你按分号拆分内容得到目标列表哦。

为什么不行?

csv.reader的设计目标是解析结构化的CSV格式数据——它会按照指定的分隔符(默认是逗号)将每行内容拆分成多个字段,而不是作为通用文本拆分工具,按你指定的分号来分割整个文件的内容。你的CSV文件里的内容是连续的SQL语句,csv.reader只会按CSV规则读取每行/每个字段,不会主动识别分号并拆分。

用csv.reader实现需求的方法

虽然不能直接拆分,但你可以先通过csv.reader读取文件的全部内容,拼接成完整的文本后再按分号拆分,具体代码如下:

import csv

with open("my_file.csv", newline='', encoding="utf8") as csvfile:
    reader = csv.reader(csvfile)
    # 将所有行的内容拼接成一个完整的字符串
    full_sql_content = ''.join([''.join(row) for row in reader])
    # 按分号拆分,同时清理掉空字符串和多余空格
    sql_statements = [stmt.strip() for stmt in full_sql_content.split(';') if stmt.strip()]

# 输出结果就是包含2个SQL语句的列表
print(sql_statements)

这段代码的逻辑是:

  • 先用csv.reader读取文件的每一行,把每行的所有字段(如果你的CSV每行是单个字段的话,''.join(row)就是该行内容)拼接成完整的SQL文本
  • 再用split(';')拆分文本,最后通过列表推导式过滤掉拆分后产生的空字符串和纯空格内容,得到干净的SQL语句列表

补充:你提到的Pandas方法

如果你用pandas.read_csv,思路类似——先读取所有内容拼接成文本再拆分,比如:

import pandas as pd

df = pd.read_csv("my_file.csv", header=None)
full_sql_content = ''.join(df[0].astype(str))
sql_statements = [stmt.strip() for stmt in full_sql_content.split(';') if stmt.strip()]

内容的提问来源于stack exchange,提问作者Valentyn

火山引擎 最新活动