如何在Python中将CSV列导入为列表?多列场景实现
将CSV文件的单词和释义列转换为IPython中的列表
嘿,我来帮你搞定这个需求!把CSV里的单词和释义转成IPython里的列表其实很简单,这里有两种实用的方法,根据你的CSV大小和使用习惯来选:
方法一:用Python标准库 csv(轻量无依赖)
如果不想额外安装第三方库,标准库的csv模块就够用,处理大型文件也能稳定运行。
假设你的CSV文件名为vocabulary.csv,内容示例如下:
word,definition
apple,苹果,一种红/绿色的常见水果
banana,香蕉,长条形黄色热带水果
cat,猫,受欢迎的家养宠物
在IPython里直接运行这段代码即可:
import csv # 初始化两个空列表用来存储数据 words = [] definitions = [] # 打开文件,注意编码(中文文件建议用utf-8避免乱码) with open('vocabulary.csv', mode='r', encoding='utf-8') as csv_file: # 用DictReader可以直接通过列名提取数据,自动跳过表头行 csv_reader = csv.DictReader(csv_file) for row in csv_reader: words.append(row['word']) definitions.append(row['definition'])
完成后,你就能像期望的那样操作这两个列表了,比如:
# 查询某个单词的释义 print(definitions[words.index('apple')]) # 输出: 苹果,一种红/绿色的常见水果 # 遍历所有单词和对应释义 for word, desc in zip(words, definitions): print(f"{word}: {desc}")
方法二:用 pandas(推荐处理大型CSV)
如果你的CSV文件特别大,pandas的处理效率会更高,而且代码更简洁。先确保你已经安装了pandas:
pip install pandas
然后在IPython中执行以下代码:
import pandas as pd # 读取CSV文件,指定编码避免乱码 df = pd.read_csv('vocabulary.csv', encoding='utf-8') # 直接将DataFrame的列转换为列表 words = df['word'].tolist() definitions = df['definition'].tolist()
同样,你可以轻松操作这两个列表:
# 查找banana的释义 target_word = 'banana' if target_word in words: print(definitions[words.index(target_word)]) # 输出: 香蕉,长条形黄色热带水果
一些实用小提示
- 如果你的CSV没有表头(第一行就是数据),需要调整代码:用
csv.reader代替DictReader,或者在pd.read_csv中添加header=None并手动指定列名,比如df = pd.read_csv('vocabulary.csv', header=None, names=['word', 'definition'], encoding='utf-8')。 - 要是CSV文件不在当前工作目录,记得填写完整路径,比如Windows路径
'C:/Users/xxx/Documents/vocabulary.csv',或者Linux/macOS路径'/home/xxx/data/vocabulary.csv'。 - 遇到乱码问题时,试试把
encoding参数改成gbk或gb2312,不少中文CSV是用这两种编码保存的。
内容的提问来源于stack exchange,提问作者JsuperTramp
相关产品推荐
相关产品推荐

