使用Python解析大型.csv文件行

时间:2019-09-03 02:34:51

标签: python csv

一个大的.csv文件通常包含一行,其中大约3000个数据元素用逗号分隔。此数据中约有50%是绒毛(非增值数据),可以删除。如何通过多次删除字符串来删除该绒毛?我是Python的新手。

我可以读取数据。我无法更改数据。下面代码中的变量x将是逐行更改的字符串。

with open('som_w.csv','r+') as file:
    reader = csv.reader(file, delimiter=',')
    for i, row in enumerate(reader):
        print(row)
        print(i+1)

writer = csv.writer(file, delimiter=',')
for row in writer:
    x = re.sub(r'<.*?>',"",writer)
    print(x)

file.close()

当前错误是csv.writer无法迭代。我相信我正在走错路。

2 个答案:

答案 0 :(得分:0)

看看评论。我认为应该有帮助。

with open('som_w.csv','r+') as file:
    reader = csv.reader(file, delimiter=',')
    for i, row in enumerate(reader):
        print(row)
        print(i+1)

writer = csv.writer(file, delimiter=',') # isn't `file` out of scope?
for row in writer:
    x = re.sub(r'<.*?>',"",writer)
    print(x)

file.close() # while using `with`, it's unnecessary to close file.

答案 1 :(得分:0)

看看this post,有一个函数示例,该函数可以使用正则表达式替换所有行。

然后尝试:

import fileinput
import sys

def replaceAll(file, searchExp, replaceExp):
    with fileinput.input(file) as f:
        for line in f:
            if searchExp in line:
                line = line.replace(searchExp, replaceExp)
            sys.stdout.write(line)

replaceAll('som_w.csv', r'<.*?>', "")