想用Python对csv表格中的某一列数据进行关键词筛选

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想用Python对csv表格中的某一列数据进行关键词筛选相关的知识,希望对你有一定的参考价值。

但是只会用全词匹配……就像line[1].decode('utf-8') == u'希区柯克'……如果要搜索包含某一关键词的项目应该怎么写呢?急求,谢谢!

line[1].decode('utf-8').find( u'希区柯克')>=0
表示当前数据包含有所查找的字符串'希区柯克'追问

请您帮我看看这是怎么回事,我只会一点C语言……

追答

你确定这些CSV文件都有8列吗,看这个错误超出列表范围,明显不足8列

而且我觉得line[1].decode('utf-8'),后面的decode('utf-8')可能会出错

追问

我完全不会用这种语言,我找了个模板想套一下……好像远超出8列啊。原模板命令是

对同样的csv文件可以执行,这个line[0]对应的是中国名字,line[4]对应的是字母A或B,line[7]对应的是外国导演名字, 有的奇长无比,line[5]对应的是日期19XXXXXX。有没有办法解决呢?

追答

将搜索的条件

if(line!=[]):
#匹配条件
改为
if len(line)>=8:
而且这个if的条件不需要放在括号里,

追问

非常感谢您的回答,并且基本解决了我的问题,谢谢!还有一点小问题希望您再帮一下

print line[33],这个line[33]里面是1949-10-01 0:00 的格式,好像没有办法输出,能再帮我解决一下吗?谢谢!

追答

不是说line[5]是日期吗,怎么又有一个日期,而且为什么会得到这么多列
打开csv文件看一下,观察里面的各列的分隔符是什么,比如分隔符是分号
就将打开csv文件的命令
reader=csv.reader(fp)

改为
reader=csv.reader(fp,delimiter=';')
用delimiter指定分隔符,应该没有这么多列的

参考技术A 筛选第一个关键词的时候和平常一样,然后继续逐一筛选后面,筛选的时候按下图勾选上这个选项即可 参考技术B 是索引列表超出了范围,不是每一行都有8列,所以要加异常处理。
#匹配条件
try:
if(。。。)
except IndexError:
do sth

使用decode要确认那一列是用什么编码的,那就用什么解码。一般英文系统是用ascii编码,有可能会出错,自己试下 喽。追问

我是小白,麻烦您看一下我对楼上的追问,谢谢!

怎样隐藏DataTable中的某一列

方法:
在this.GridView1.DataSource =bind() ;
this.GridView1.DataBind();
后面写
for(int i=0;i<GridView1.Rows.Count;i++)

TableCell tc=GridView1.Rows[i].Cells[0]; //定义第一列
tc.Visible=false; //隐藏所有行中的第一列数据

//顺便隐藏列头
GridView1.HeaderRow.Cells[0].Visible = false;
参考技术A $('#example').DataTable( "columnDefs": [ "targets": [ 6 ], //隐藏第六列,从第0列开始 "visible": false ] );这里有所有的api: http://www.datatables.net/本回答被提问者采纳 参考技术B hidden:true

以上是关于想用Python对csv表格中的某一列数据进行关键词筛选的主要内容,如果未能解决你的问题,请参考以下文章

怎样隐藏DataTable中的某一列

如何提取DataTable中的某一列字段的所有数据,进行运算

JQuery 对带有checkbox的table操作 遍历选中的行的某一列的数据

vue+element table实现对表格的某一列作特殊处理

如何提取DataTable中的某一列字段的所有数据,进行运算

python对dataframe列里的元素进行修改?