不使用open()函数读取|分隔CSV文件的技术方案咨询
无法使用
open()读取分隔符文本文件的可行解决方案 方案1:使用pandas直接读取(最简便,符合现有环境要求)
pandas内置的read_csv方法不需要你显式调用open()创建文件对象,直接传入文件路径即可完成读取,也不需要用到with关键字,完全适配你的场景:
import pandas as pd # 直接传入文件路径,指定分隔符、引号字符,因为没有表头所以header设为None df = pd.read_csv( "file.txt", sep="|", quotechar="'", header=None, skipinitialspace=True # 处理部分字段前的多余空格 ) # 转换为嵌套列表,匹配你需要的无结构列表格式 mylist = df.values.tolist()
你不需要对Dataframe做额外操作,直接转成列表后就可以沿用你原来的处理模板,不会额外增加复杂度,运行后mylist的输出格式和你原本用csv.reader得到的结果完全一致。
方案2:使用Spark原生API读取(适配Spark环境)
因为你是在搭载Spark的平台运行,也可以直接用Spark的textFile接口读取文件,完全不会调用Python原生的open()方法:
# sc为已初始化的SparkContext对象,平台一般会默认创建好无需手动初始化 lines_rdd = sc.textFile("file.txt") # 逐行处理拆分、去除引号和空格,最后转换为本地列表 mylist = lines_rdd.map( lambda line: [item.strip().strip("'") for item in line.split("|")] ).collect()
内容的提问来源于stack exchange,提问作者Tanai Goncalves
相关产品推荐
相关产品推荐

