88888 发表于 2020-11-18 14:12:16

老哥们,请教一下关于python处理csv的问题

导入了csv模块
然后读取了csv文件
在追加进新的列表时
每一列都追加了进去
我想要的效果是
比如表格有10列
但我只想要替换了某一列数据后
只留下表格的其中3列
应该怎么写呢?

import csv

path = fr'C:\Users\user1\Desktop\2020-11-17.csv'

csvFile = open(path,'r')   #'a+' 权限为追加
mystr = csvFile.read()
mylist = mystr.strip().split('\n')

b = []
j = 0

for i in mylist:
    a = i.split(',')
    if(a == '多'):
      a = '买'
      b.append(a)
    else:
      a = '卖'
      b.append(a)

print(b)

kogawananari 发表于 2020-11-18 14:50:22

全部读到内存里 再 覆盖之后写入
假设没有表头吧
import csv
filename = r'C:\Users\user1\Desktop\2020-11-17.csv'
先读 全部读到内存 如果第一行第一列数据前面出现了\ufeff 需要设置encoding='utf-8-sig'
with open(filename) as f:
    reader = csv.reader(f)
    data = list(reader)
data就是全部数据你可以现在对data处理 data=map(...,data)
然后你再写入数据 覆盖
with open(filename, "w", encoding='utf-8', newline='') as csvFile:
    writer = csv.writer(csvFile)
    for i in data:
      i.pop(0) #你不需要第一行就这样
      writer.writerow(i)


88888 发表于 2020-11-18 14:59:18

kogawananari 发表于 2020-11-18 14:50
全部读到内存里 再 覆盖之后写入
假设没有表头吧
import csv


可是如果不需要列的话,应该怎样呢?比如不需要每一行的第二列和第四列的话?

kogawananari 发表于 2020-11-18 15:01:41

本帖最后由 kogawananari 于 2020-11-18 15:10 编辑

import csv
filename = r'C:\Users\user1\Desktop\2020-11-17.csv'
with open(filename) as f:
    reader = csv.reader(f)
    data = list(reader)
with open(filename, "w", encoding='utf-8', newline='') as csvFile:
    writer = csv.writer(csvFile)
    for i in data:
      i.pop(3) #去掉第4
      i.pop(1) #去掉第2
      writer.writerow(i)

88888 发表于 2020-11-18 15:17:15

kogawananari 发表于 2020-11-18 15:01
import csv
filename = r'C:%users%user1\Desktop\2020-11-17.csv'
with open(filename) as f:


老哥,我看你上面的备注写的是pop是删除行的,如何删除每一行的固定列呢?

kogawananari 发表于 2020-11-18 16:05:00

88888 发表于 2020-11-18 15:17
老哥,我看你上面的备注写的是pop是删除行的,如何删除每一行的固定列呢?

我那个代码 你有自己运行吗 {:10_293:}我应该是删的列吧

88888 发表于 2020-11-19 08:36:27

kogawananari 发表于 2020-11-18 16:05
我那个代码 你有自己运行吗 我应该是删的列吧

我悟了。。。。
页: [1]
查看完整版本: 老哥们,请教一下关于python处理csv的问题