如何从含CREATE TABLE的TXT文件提取列名至Pandas DataFrame
提取SQL建表语句中的列名并导入Pandas DataFrame
方法一:使用正则表达式(无需额外依赖)
适合结构规整的建表语句,通过正则匹配快速提取列名:
- 读取TXT文件中的SQL内容
- 用正则匹配每行开头的列名标识符,跳过括号、分号等无关行
- 将提取结果转为Pandas DataFrame
代码示例:
import pandas as pd import re # 读取TXT文件内容 with open('your_file.txt', 'r') as f: sql_content = f.read() # 正则匹配列名:匹配每行开头的字母/下划线开头的标识符 column_pattern = re.compile(r'^\s*([a-zA-Z_][a-zA-Z0-9_]*)\s+', re.MULTILINE) columns = column_pattern.findall(sql_content) # 转换为DataFrame df = pd.DataFrame(columns, columns=['column_name']) print(df)
方法二:使用sqlparse库(更健壮)
针对复杂格式的建表语句(如包含注释、特殊语法),用专业SQL解析库更可靠:
- 先安装依赖:
pip install sqlparse - 读取文件内容并解析SQL结构
- 遍历解析结果提取列名
- 转为DataFrame
代码示例:
import pandas as pd import sqlparse # 读取TXT文件内容 with open('your_file.txt', 'r') as f: sql_content = f.read() # 解析SQL语句 parsed = sqlparse.parse(sql_content)[0] # 提取列名:定位CREATE TABLE的括号内定义部分 columns = [] for token in parsed.tokens: if isinstance(token, sqlparse.sql.Parenthesis): for item in token.tokens: if isinstance(item, sqlparse.sql.Identifier): col_name = item.get_real_name() columns.append(col_name) # 转换为DataFrame df = pd.DataFrame(columns, columns=['column_name']) print(df)
两种方法的输出结果一致,示例如下:
column_name 0 track_id 1 ads_id 2 ads_name 3 play_time 4 package_id 5 package_name 6 company_id 7 company_name 8 click_time 9 demographic 10 status
内容的提问来源于stack exchange,提问作者sssxxxyyy
相关产品推荐
相关产品推荐

