Python如何提取行首单词 随机抽取CSV文件中的法语单词
随机抽取CSV内法语单词的实现方案
你当前的代码直接读取整行内容,没有做表头过滤和字段分割,所以会拿到整行的法英对照内容。可以通过以下两种方式实现需求:
方案1:轻量修改现有逻辑(适用于格式简单无特殊字符的词表)
逐行读取内容后跳过第一行表头,对每行内容按逗号分割,取第一个字段就是对应的法语单词,记得提前去掉行尾的换行符:
import random with open('data/french_words.csv', 'r', encoding='utf-8') as french_words: # [1:]跳过第一行表头,strip()去掉换行/首尾空格,split(',')[0]取逗号前的法语词 word_list = [line.strip().split(',')[0] for line in french_words.readlines()[1:]] rand_french_word = random.choice(word_list)
注意:如果词表内的字段本身包含逗号(比如带引号包裹的释义内容),这种简单字符串分割的方式会出现取值错误,更推荐用下面的标准库方案。
方案2:使用Python内置csv模块(推荐,适配所有合法CSV格式)
Python标准库自带的csv模块会自动处理CSV格式的转义、引号、特殊字符等规则,不需要手动写分割逻辑,还可以直接通过列名取值,容错性更高:
import csv import random with open('data/french_words.csv', 'r', encoding='utf-8') as f: # DictReader自动将第一行识别为列名 reader = csv.DictReader(f) word_list = [row['French'] for row in reader] rand_french_word = random.choice(word_list)
两种方案最终的rand_french_word变量都会直接存储随机抽取到的法语单词,不会附带英文释义和逗号。
小提示
- 打开CSV文件时建议显式指定
encoding='utf-8',避免不同操作系统默认编码差异导致的乱码问题 - 万条以内的常规词表用上述全量读取的方式完全不会有性能问题,如果是超百万条的超大词表,可以先生成随机行号再跳转读取,减少内存占用
内容的提问来源于stack exchange,提问作者RosalinaTheGalaxyWolf
相关产品推荐
相关产品推荐

