文本处理笔记

来源:互联网 发布:建行软件下载 编辑:程序博客网 时间:2024/05/16 15:56

简单的记录一下,最近遇到的一些字段处理上的问题。


在使用爬虫抓取数据时,有时会抓取到一些让人很无奈的数据,处理方式也需要你做一些不同的处理。
因为我用的框架是自己拼接sql语句,也就是匹配到页面内容后(一般用正则匹配),给字段内容的两端添加单引号,来实现拼接,在这种情况下就会出现一些很有意思的事情,例如字段内容自带引号(包括单引号和双引号,Mysql都识别)。
举例说明:

name telephone 王子 123456789 I’am 987765321 角”小王 1275376215 小周\/ 237858763 1\小李 2342342 O(∩_∩)O哈哈~ 32213124

以上内容都是网页上实际显示的内容,当我们自己拼接字段时,就会出现这样'I'ma',这样'角"小王',还有这样'小周\',这里说明的只是部分并不完全,请读者自己类比。
这里解释一下各字段的结果,第一种情况下,sql语句多了一个单引号,这样的语句执行时会出错,第二个类似(我当时遇到这种问题,但目前看来直接执行sql语句并没有影响),第三种情况下\会把单引号转义,这是sql语句就少了一个单引号,当出现以上的类似情况时,我们就需要去自己转义字段内部的特殊字符,以避免出现无法插入的情况。


关于转义,这也是一个很坑的问题,因为本身在java语言中\也需要转义,所以很多时候转义字符数量就会很奇怪。
下面就是转义的方式。

//此处模拟要拼接的字段内容String str = "'I'am'";str = "'" + str.substring(1, str.length() - 1).replaceAll("\'", "\\\\\'") + "'";System.out.println(str);输出结果:'I\'am'
//此处模拟要拼接的内容,实际字段内容是'小周\'String str = "'小周\\'";str = str.replaceAll("\\\\", "\\\\\\\\");System.out.println(str);输出结果:小周\\

上面的方式是我个人整理的内容,如果看到内容的大神有更好的处理方式,请评论或私信告知,万分感谢。

以上。

原创粉丝点击