IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 从零开始Python数据分析(笔记)——3.3字符串处理方法 -> 正文阅读

[人工智能]从零开始Python数据分析(笔记)——3.3字符串处理方法

目录

一、字符串常用方法

? ? ? ??常见处理

二、正则表达式

????????匹配查询函数

? ? ? ? 匹配替换函数

????????匹配分割函数


一、字符串常用方法

常见处理

常见字符串型数据的处理:

  • 截取字符串中某一段内容
  • 将字符串按照某个指定的分隔符将其分隔开
  • 对字符串的某些值进行替换

字符串不包含任何引号,那么单引号、双引号、三引号均可使用;

字符串包含双引号,那么使用单引号或者三引号,类似变量string1;

字符串包含单引号,那么使用双引号或者三引号,类似变量string2;

字符串包含单引号和双引号,那么只能使用三引号构建,类似变量string3

三引号是适用情况最多的字符串构造方法,而且三引号允许长字符串的换行,如string4;

# 单引号构造字符串
string1 = '"commentTime":"2018-01-26 08:59:30","content":"包装良心!馅料新鲜!还会回购"'
# 双引号构造字符串
string2 = "ymd:'2017-01-01',bWendu:'5℃',yWendu:'-3℃',tianqi:'霾~晴',fengxiang:'南风',aqiInfo:'严重污染'"
# 三引号构造字符串
string3 = ''''nickName':"美美",'content':"环境不错,服务态度超好,就是有点小贵",'createTimestring':"2017-09-30"'''
string4 = '''据了解,持续降雪造成安徽部分地区农房倒损、种植养殖业大棚损毁,
其中合肥、马鞍山、铜陵3市倒塌农房8间、紧急转移安置8人。'''
print(string1)
print(string2)
print(string3)
print(string4)   

out:
"commentTime":"2018-01-26 08:59:30","content":"包装良心!馅料新鲜!还会回购"
ymd:'2017-01-01',bWendu:'5℃',yWendu:'-3℃',tianqi:'霾~晴',fengxiang:'南风',aqiInfo:'严重污染'
'nickName':"美美",'content':"环境不错,服务态度超好,就是有点小贵",'createTimestring':"2017-09-30"
据了解,持续降雪造成安徽部分地区农房倒损、种植养殖业大棚损毁,
其中合肥、马鞍山、铜陵3市倒塌农房8间、紧急转移安置8人。

表1 字符串的常用方法
方法? ?使用说明方法使用说明
string[start:end:step]字符串切片string.replace字符串的替换
string.split字符串的分割sep.join将可迭代对象按sep分割符拼接为字符串
string.strip删除首尾空白string.lstrip删除字符串左边空白
string.rstrip删除字符串右边空白string.count对字符串的子串计数
string.index返回子串首次出现的位置string.find返回子串首次出现的位置(找不到返回-1)
string.startswith字符串是否以什么开头string.endswith字符串是否以什么结尾

# 获取身份证号码中的出生日期
print('123456198901017890'[6:14])
# 将手机号中的中间四位替换为四颗星
tel = '13612345678'
print(tel.replace(tel[3:7],'****'))
# 将邮箱按@符分隔开
print('12345@qq.com'.split('@'))
# 将Python的每个字母用减号连接
print('-'.join('Python'))
# 删除"  今天星期日  "的首尾空白
print("  今天星期日  ".strip())
# 删除"  今天星期日  "的左边空白
print("  今天星期日  ".lstrip())
# 删除"  今天星期日  "的右边空白
print("  今天星期日  ".rstrip())
# 计算子串“中国”在字符串中的个数
string5 = '中国方案引领世界前行,展现了中国应势而为、勇于担当的大国引领作用!'
print(string5.count('中国'))
# 查询"Python"单词所在的位置
string6 = '我是一名Python用户,Python给我的工作带来了很多便捷。'
print(string6.index('Python'))
print(string6.find('Python'))
# 字符串是否以“2018年”开头
string7 = '2017年匆匆走过,迎来崭新的2018年'
print(string7.startswith('2018年'))
# 字符串是否以“2018年”年结尾
print(string7.endswith('2018年')) 

out:
19890101
136****5678
['12345', 'qq.com']
P-y-t-h-o-n
今天星期日
今天星期日  
  今天星期日
2
4
4
False
True
  • index和find都只能返回首次发现子串的位置,如果没有,对于index,报错;对于find,返回-1;

二、正则表达式

正则表达式是从字符串中发现规律,并通过‘抽象’的符号表达出来。对于需要匹配的字符串来说,同样把发现规律作为第一步,使用正则表达式完成字符串的查询匹配、替换匹配和分割匹配。常用正则符号如下:

表2.常用正则符号
符号含义实例
.可以匹配任意字符,除了换行符’\n‘Pyt.on→pytmon
\转义符,一般用于保留字符串中的特殊元字符10\.3→10.3
|逻辑或人a|A→人a或人A
[]用于匹配的一组字符m[aA]n→man或mAn
\d或\D\d匹配任意数字,\D代表所有非\d今天\d号→今天3号
\s或\S\s匹配任意空白字符,\S代表所有非\s你\s好→你? 好
\w与\W\w匹配字母数字和下划线,\W代表所有非\w
*匹配前一个字符0到无穷次OK*→O或者OK或OKK
+匹配前一个字符1到无穷次? ? ?OK+→OK或者OKK
?匹配前一个字符0到1次

OK?→O或者OK

{m}匹配前一个字符m次OK{3}→OKKK
{m,n}匹配前一个字符m到n次OK{1,2}→OK或者OKK
(.*?)用于分组,默认返回括号内的匹配内容可见后续

????????匹配查询函数

????????findall(pattern,string,flags=0)

? ? ? ? findall函数可以对指定的字符串进行遍历匹配,获取字符串中所有匹配的子串,并返回一个列表结果。

  • pattern:指定需要匹配的正则表达式
  • string:制定待处理的字符串
  • flags:指定匹配模式,常用的值可以是re.I,re.M,re.S,re.X。
re.I让正则表达式对大小写不敏感
re.M让正则表达式可以多行匹配
re.S指明正则符号. 可以匹配任意字符,包括换行符\n
re.X允许正则表达式可以写的更加详细,如多行表示、忽略空白字符、加入注释

# 导入第三方包
import re
# 取出出字符中所有的天气状态
string8 = "{ymd:'2018-01-01',tianqi:'晴',aqiInfo:'轻度污染'},{ymd:'2018-01-02',tianqi:'阴~小雨',aqiInfo:'优'},{ymd:'2018-01-03',tianqi:'小雨~中雨',aqiInfo:'优'},{ymd:'2018-01-04',tianqi:'中雨~小雨',aqiInfo:'优'}"
print(re.findall("tianqi:'(.*?)'",string8,re.S))
print(re.findall("(tianqi:'(.*?)')",string8,re.S))

out:
['晴', '阴~小雨', '小雨~中雨', '中雨~小雨']
[("tianqi:'晴'", '晴'), ("tianqi:'阴~小雨'", '阴~小雨'), ("tianqi:'小雨~中雨'", '小雨~中雨'), ("tianqi:'中雨~小雨'", '中雨~小雨')]
  • 因为待查询有单引号,所以用双引号
  • 有括号只返回括号内的查询结果
# 取出所有含O字母的单词
string9  = 'Together, we discovered that a free market only thrives when there are rules to ensure competition and fair play, Our celebration of initiative and enterprise'
print(re.findall('\w*o+\w*',string9,re.I))

out:
['Together', 'discovered', 'only', 'to', 'competition', 'Our', 'celebration', 'of']

? ? ? ? 匹配替换函数

? ? ? ? sub(pattern,repl,string,count=0,flags=0)

????????sub函数的功能是替换,类似于字符串的replace方法,该函数根据正则表达式把满足匹配的内容替换为repl。该函数的参数含义如下:

  • pattern:同上
  • repl:指定替换成的新值
  • string:同上
  • count:用于指定最多的替换次数,默认为全部替换
  • flags:同上
  • # 将标点符号、数字和字母删除
    string10 = '据悉,这次发运的4台蒸汽冷凝罐属于国际热核聚变实验堆(ITER)项目的核二级压力设备,先后完成了压力试验、真空试验、氦气检漏试验、千斤顶试验、吊耳载荷试验、叠装试验等验收试验。'
    print(re.sub('[,。、a-zA-Z0-9()]','',string10))
    
    out:
    据悉这次发运的台蒸汽冷凝罐属于国际热核聚变实验堆项目的核二级压力设备先后完成了压力试验真空试验氦气检漏试验千斤顶试验吊耳载荷试验叠装试验等验收试验

????????匹配分割函数

????????split(pattern,string,maxsplit=0,flags=0)

????????split函数是将字符串按照指定的正则表达式分隔开,类似于字符串的split方法。该函数的含义如下:

  • pattern:同上
  • maxsplit:用于指定最大分割次数,默认为全部分割
  • string:同上
  • flags:同上
# 将每一部分的内容分割开
string11 = '2室2厅 | 101.62平 | 低区/7层 | 朝南 \n 上海未来 - 浦东 - 金杨 - 2005年建'
split = re.split('[-\|\n]',string11)
print(split)
split_strip = [i.strip() for i in split]
print(split_strip)

out:
['2室2厅 ', ' 101.62平 ', ' 低区/7层 ', ' 朝南 ', ' 上海未来 ', ' 浦东 ', ' 金杨 ', ' 2005年建']
['2室2厅', '101.62平', '低区/7层', '朝南', '上海未来', '浦东', '金杨', '2005年建']

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 01:58:30  更:2022-01-14 01:59:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 22:22:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码