如何将用户输入的球员数据转为CSV格式?Pandas使用遇阻求助
解决方法
核心问题
你用input()只能读取单行文本,粘贴多行球员数据时,只有第一行(表头)被捕获,后续数据行全部丢失,导致导出的CSV只有表头。
具体实现步骤
1. 改用多行输入读取
用sys.stdin读取所有粘贴的内容,支持多行输入。在终端粘贴数据后,按以下快捷键结束输入:
- Linux/macOS:
Ctrl + D - Windows:
Ctrl + Z然后按回车
2. 处理文本格式
FBref表格粘贴后的数据通常是制表符(\t)分隔,可以直接按制表符拆分每行字段;如果是多空格分隔,用正则处理连续空格。
3. 完整代码示例
import pandas as pd import sys import re # 读取所有粘贴的多行内容 raw_data = sys.stdin.read().strip().split('\n') # 过滤空行 raw_data = [line for line in raw_data if line.strip()] # 拆分表头和数据行 header = raw_data[0] data_rows = raw_data[1:] # 自动识别分隔符:优先制表符,否则按连续空格拆分 if '\t' in header: separator = '\t' else: separator = re.compile(r'\s{2,}') # 处理表头字段 header_fields = [field.strip() for field in separator.split(header)] # 处理数据行字段,确保和表头字段数匹配 processed_data = [] for row in data_rows: fields = [field.strip() for field in separator.split(row)] if len(fields) == len(header_fields): processed_data.append(fields) # 构建DataFrame并导出CSV df = pd.DataFrame(processed_data, columns=header_fields) df.to_csv('player_stats.csv', index=False, encoding='utf-8') print("CSV文件已成功导出:player_stats.csv")
额外注意事项
- 如果FBref表格是复合表头(含两行表头),需要先手动合并表头字段,或修改代码处理两行表头的逻辑。
- 粘贴数据时尽量只选中表格内内容,减少空行或无效数据干扰。
内容的提问来源于stack exchange,提问作者Joseph Darton
相关产品推荐
相关产品推荐

