老哥们,请教一下关于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)
全部读到内存里 再 覆盖之后写入
假设没有表头吧
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)
kogawananari 发表于 2020-11-18 14:50
全部读到内存里 再 覆盖之后写入
假设没有表头吧
import csv
可是如果不需要列的话,应该怎样呢?比如不需要每一行的第二列和第四列的话?
本帖最后由 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) kogawananari 发表于 2020-11-18 15:01
import csv
filename = r'C:%users%user1\Desktop\2020-11-17.csv'
with open(filename) as f:
老哥,我看你上面的备注写的是pop是删除行的,如何删除每一行的固定列呢? 88888 发表于 2020-11-18 15:17
老哥,我看你上面的备注写的是pop是删除行的,如何删除每一行的固定列呢?
我那个代码 你有自己运行吗 {:10_293:}我应该是删的列吧 kogawananari 发表于 2020-11-18 16:05
我那个代码 你有自己运行吗 我应该是删的列吧
我悟了。。。。
页:
[1]