字符串操作

 

1.字符串常用操作方法

1.str.find('xx',startIndex,endIndex)

没找到,返回-1

str.rfind()

2.str.index('xxx')

没找到,抛出异常

str.rindex()

3.str.count('xxx')

计算出现几次。

4.str.replace('xx','XX')  将替换后的字符串返回

5.str.split(' ')   -->[]  ***

应用:str="asff d s  af  \t\td as f fdsf"   将空格和制表符去除

str.split()   按照不可见字符切割

 

6.str.capitalize()  将第一个字母变成大写

7.titile()

8.startWith('xxx')   -->Ture or False

9.lower() , upper()

11.ljust (10)   rjust()  center()    对齐

12.lstrip()   rstrip()  strip() 去空格   ***

13.partition()   分割成三部分

14.splitlines()   -->按行切

15. isXXX()

  isdigit()  纯数字

  isalpha()  纯字母

  isalnum()  字母或数字

16.join()

 

字典   <--->字符串

  eval("[{'a':'admin''},{}]")

   注意:代码注入,不执行?

  本质就是将字符串放进代码中执行。 即 stu2=[{},{}],如果这个代码通过,则stu2=eval(s_stu)

也会通过。

 

 

17. cmp(str1, str2) 比较两个字符串

 

 2. 正则表达式处理字符串

2.1 规则

 

 

 

 

 贪婪匹配:{2,6} 匹配2-6个字符,如果能找到6个,就先匹配6个

?:表示有或没有

*:表示>=0

+:表示>=1, 默认是贪婪匹配,尽量匹配多个 

组合:/a(bc)+/

或者:(ab) | (cd)

 

 2.2 python中使用正则

# coding:utf-8
import re

# 将正则表达式编译成Pattern对象
pattern = re.compile('hello.*!')

# 使用Pattern匹配文本,获取匹配结果,无匹配时返回None
match = pattern.match('hello world!')

if match:
    # 使用match获取分组信息
    print(match.group)

 

 

 

 

# coding:utf-8
import re

# 将正则表达式编译成Pattern对象
pattern = re.compile('(he)llo(.*)!')

# 使用Pattern匹配文本,获取匹配结果,无匹配时返回None
match = pattern.match('hello world!lsdjl')

if match:
    # 使用match获取分组信息
    print(match.group(1,2))

 

 

split分割:安装正则方式做分割

p = re.compile(r'\d+')
print(p.split('aa12bb34cc'))

 

 

findall:按照正则方式查询所有匹配的子串,返回列表

p = re.compile(r'\d+')
print(p.findall('hello 123world456'))

 

 

sub:字符串替换

  将字符串 hello world, good morning! 替换为world hello, moring good!

p = re.compile(r'(\w+) (\w+)')
print(p.sub(r'\2 \1', 'hello world, good morning! '))
def func(m):
return m.group(1).title()+' '+m.group(2).title()

print(p.sub(func, 'hello world, good morning! '))

 

subn:返回替换结果,和替换次数

 

 3. jieba中文分词

jieba.cut接受3个参数:

  需要分词的字符串

  cut_all参数决定是否采用全模式

  HMM控制是否HMM模式

import jieba

reg_list = jieba.cut('我在学习自然语言处理', cut_all=True)
print('/'.join(reg_list))

 

 

jieba.cut_search:粒度比较细,所有有意义的词

  字符串

  是否HMM模式

 

用户自定义词典,例如专业名词,品牌名词等

  动态添加分词,只对本次程序生效,并且HMM必须设为False

3.1 关键词提取(特征提取)

   基于TF-IDF算法的guanjian关键词提取

key_words = analyse.extract_tags(u'', topK=20, withWeight=False, allowPOS=('ns'))
print(key_words)
# topK:返回多少个关键词
# withWeight:是否返回关键词的权重
# allowPOS:仅仅包好指定的词,默认为空

 

 

 

  基于textrank算法的关键词抽取

# 和extract_tags用法相同
jieba.analyse.textrank('', topK=20, withWeight=True, allowPOS=())

 

 

  词性标注,POS tag

 

 

   并行分词,提高运行效率

jieba.enable_parallel()
words = jieba.cut('我在学习自然语言处理')

 

   在Linux环境下可以使用。

 

  tokenize:返回词语在原文中的起始位置

result = jieba.tokenize(u'我在学习自然语言处理')
for tk in result:
    print('%s\t\t start: %d \t\t end: %d'%(tk[0], tk[1], tk[2]))

 

   ChineseAnalyzer for Whoosh 搜索引擎

 

 

 

 

 

 

end

 

posted @ 2018-04-15 17:44  fight139  阅读(166)  评论(0编辑  收藏  举报