Python笔记:字符串操作

本文介绍了如何在Python中使用in、index、rindex、find、rfind等方法判断字符串中是否包含指定字符,统计单词出现次数,以及通过正则表达式提取和替换字符串内容。此外,还展示了字符删除、格式化转换和删除任意位置字符的方法。
摘要由CSDN通过智能技术生成

本文记录一些Python字符串相关操作技巧。

判断字符串中是否包含指定字符串

1、in 操作符

text   = "hello world!"
result = 'world' in text

2、index方法

>>> text   = "hello world!"
>>> text.index('world')
6
>>> text.index('world',6)  # 从第7个字符串开始查找
6
>>> text.index('nihao')  # 不存在会报 ValueError 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

3、rindex方法

>>> text.rindex('l')
9

4、find方法

>>> text.find('world')
6
>>> text.find('world',6,len(text)-1)  # 指定起始位置
6

5、rfind方法:返回最后一次出现的位置

>>> text.rfind('l')
9

6、正则表达式

re.search 方法

>>> import re
>>> text   = "hello world!"
>>> re.search(r"world", text)
<re.Match object; span=(6, 11), match='world'>
>>> res =re.search(r"wor\w+", text)
>>> res
<re.Match object; span=(6, 11), match='world'>
>>> res.group()
'world'
>>> res.span()
(6, 11)

re.findall查找所有匹配到的字符,没有位置信息

>>> re.findall(r"l\w+", text)
['llo', 'ld']
>>>

re.finditer 方法可以查找所有匹配到的字符,并且提供位置信息

>>> for match in re.finditer(r"l\w+", text):
...     print(match)
...
<re.Match object; span=(2, 5), match='llo'>
<re.Match object; span=(9, 11), match='ld'>

正则表达式语法很多,更多用法可参考正则表达式介绍及Python使用方法

统计字符串中某个单词的出现的次数

a = 'test 123 dfg test'
## 方法1
len([i for i in a.split(' ') if i == test])

## 方法2
len(a.split('test'))-1

Python提取两个字符串之间的内容

import re 
str = '''/begin MEASUREMENT
100
LINK
DISPLAY
SYMBOL
/end MEASUREMENT'''
 
regex = r'/begin MEASUREMENT([\s\S]*)/end MEASUREMENT'
matches = re.findall(regex, str)
for match in matches:
    print(match)
import re 
str = 'test:100      end' 
regex = r'test:([\s\S]*)/end'
matches = re.findall(regex, str)
test = matches[0].strip()

字符删除、替换

删除空格

s = ' 123abcd456  '
# 删除两边的空格
print(s.strip())
# 删除右边空格
print(s.rstrip()) 
# 删除左边空格
print(s.lstrip())
# 删除两边的数字
print(s.strip(' ').strip('123456'))
# 删除两边的引号
s = "'123abcd456'"
print(s.strip("'"))

分割并去除空格

string = " hello , world !"
string = [x.strip() for x in string.split(',')]

将格式化字符转换为字典

string = "dst='192.168.0.1',src='192.168.1.2'"
fields = dict((field.split('=') for field in string.split(',')))
fields = dict(((lambda a:(a[0].strip("'"),a[1].strip("'"))) (field.split('=')) for field in string.split(',')))
>>> fields
{'dst': "'192.168.0.1'", 'src': "'192.168.1.2'"}

删除(替换)任意位置字符

s = '11233aabcdd41556'
# 删除某个特定字符
print(ss.replace('1', ''))
# 同时删除不同字符
import re
print(re.sub('[1a]', '', s))
--THE END--

系列文章

1. VSCode + Python环境配置
2. Python PEP—Python增强提案
3. 正则表达式介绍及Python使用方法
4. Python笔记:List相关操作
5. Python笔记:字符串操作
6. Python函数的参数类型
7. Python反射介绍
8. Python笔记:属性值设置和判断变量是否存在
9. Python中的__new__、__init__以及metaclass
10. Python对象及内存管理机制
11. Python内存驻留机制
12. Python笔记:Python装饰器
13. Python中的闭包
14. Python笔记:lambda匿名函数
15. Python多线程与多进程
16. Python协程
17. Python笔记:日期时间获取与转换
18. Python笔记:命令行参数解析
19. Python 命令行参数解析之 Click
20. Python json文件读写
21. Python yaml文件读写
22. Python Scapy 报文构造和解析


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值