当前位置: 首页 > 知识库问答 >
问题:

Python中的大型csv文件[副本]

吕宣
2023-03-14
dfile=open(csvfile,'r')
lines=dfile.readlines()
dfile.close()
for i in range(0, len(lines)):
    lines[i]=f(lines[i])
# f(.) is a function that modifies line string if a pattern is found
# then I have a code to write the processed data in another csv file.
import cache
j=1
while True:
    line=cache.getline(csvfile,j)
    if line='':
        break
    outp=open(newfile,'w')
    outp.write(f(line))
    outp.close()
    j+=1
encoding error reading location 0X9b?!
Description           Effectivity                AvailableLengths  Vendors
Screw 2" length 3"    "machine1, machine2"       25mm              "vend1, ven2"
pin 3"                machine1                   2-3/4"            vend3
pin 25mm              "machine2, machine4"       34mm              "vend5,Vend6"
Filler 2" red         machine5                   "4-1/2", 3""      vend7
"descr1, descr2"      "machin1,machin2,machine3" 50                "vend1,vend4"
Screw 2" length 3","machine1, machine2",25mm,"vend1, ven2"

由于多值字段和维度使用报价,csv读取器读取此文件失败。我的函数(上面代码中的函数f)如果那个逗号在属于同一字段的两个数据之间,就用分号代替逗号,如果那个引号是维度的东西,就用'inch'代替。

f(firstline)=Screw 2INCH length 3INCH,machine1;machine2,25mm,vend1;ven2

共有1个答案

和柏
2023-03-14

尝试使用以下方法来处理编码错误:

open(csvfile, 'r', encoding = 'utf8')

对于性能,可能是函数f()的问题,它的复杂性/内存消耗很高。

你能把函数f()粘贴在这里吗?如果您试图找到一个模式,您也可以考虑使用regex。

 类似资料:
  • 我使用Dask读取2.5GB csv文件,Python给了我错误。这是我写的代码: 以下是我从Python得到的错误: dask_df=df1.read_csv('3SPACK_N150_7Ah_压力分布研究_Data_Matrix.csv')) 文件“C:\ProgramData\Anaconda3\lib\site packages\dask\dataframe\io\csv.py”,第645

  • 问题内容: 我正在使用Python脚本处理大型CSV文件(数以10M行的GB数)。 这些文件具有不同的行长,并且无法完全加载到内存中进行分析。 每行由脚本中的一个函数分别处理。分析一个文件大约需要20分钟,并且看来磁盘访问速度不是问题,而是处理/函数调用。 代码看起来像这样(非常简单)。实际的代码使用Class结构,但这是相似的: 鉴于计算需要共享的数据结构,使用多核在Python中并行运行分析的

  • 我正在处理非常大的.csv文件,并且正在尝试查找文件中的行数以及其他事情,例如解析为json等。 我的问题是如何克服csv库的限制,因为我不断收到以下错误。 我提供了一个在python3中工作的示例程序,它将返回csv文件中的行数。 但是,当运行1.5GB csv文件时,我仍然会收到这个错误。 在这个问题上所做的任何工作都是非常值得赞赏的。谢谢!

  • 我需要将大型csv文件从node发送到Python。这段代码适用于小文件,但不适用于大文件。我也试过产卵过程。我不明白问题出在哪里。如果有人知道正确的代码,请分享 代码: 错误

  • 问题内容: 我目前正在尝试从Python 2.7中的.csv文件中读取数据,该文件最多包含100万行和200列(文件范围从100mb到1.6gb)。对于少于300,000行的文件,我可以(非常缓慢地)执行此操作,但是一旦超过该行,就会出现内存错误。我的代码如下所示: 在getstuff函数中使用else子句的原因是,所有符合条件的元素都将一起列在csv文件中,因此,经过它们以节省时间时,我离开了循

  • 我从Google Bigquery中提取了一个2列1000万行的。csv文件。 我已经在本地下载了一个大小为170MB的.csv文件,然后将文件上传到Google Drive,我想使用pandas.read_csv()函数将其读入我的Jupyter笔记本中的pandas DataFrame。 这是我使用的代码,有我想读的特定文件ID。