Python 字符串str处理

参考资料
  • Python之string模块(详细讲述string常见的所有方法)
    https://www.cnblogs.com/lyy135146/p/11655105.html
  • Python之re模块
    https://www.cnblogs.com/shenjianping/p/11647473.html
  • Python批量模糊匹配的3种方法实例
    https://www.jb51.net/article/239151.htm
  • 正则表达式30分钟入门教程
    https://deerchao.cn/tutorials/regex/regex.htm
  • 什么是正则表达式?
    https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md
特殊字符
一、转义字符
\n	换行符,将光标位置移到下一行开头。
\r	回车符,将光标位置移到本行开头。
\t	水平制表符,也即 Tab 键,一般相当于四个空格。
\b	退格(Backspace),将光标位置移到前一列。
\\	反斜线
\'	单引号
\"	双引号
\	在字符串行尾的续行符,即一行未完,转到下一行继续写。

二、算术运算符
+12.45 + 15	27.45
-4.56 - 0.26	4.3
*5 * 3.6	18.0
/	除法(和数学中的规则一样)	7 / 2	3.5
//	整除(只保留商的整数部分)	7 // 2	3
%	取余,即返回除法的余数	7 % 2	1
**	幂运算/次方运算,即返回 x 的 y 次方	2 ** 4	16,即 24

三、格式化操作符:
* %s 字符串(用 str() 函数进行字符串转换)
* %r 字符串(用 repr() 函数进行字符串转换)
* %d 十进制整数
* %f 浮点数
* %% 字符 %
自带或常用方法
title()
返回字符串的标题版本,即单词首字母大写其余字母小写
upper()
返回字符串全部大写的版本
lower()
返回字符串的全部小写版本
swapcase()
返回字符串大小写交换后的版本
isalnum()
检查所有字符是否只有字母和数字
isalpha()
检查字符串之中是否只有字母
前面加is可以变为判断方法
三、常用方法
''.join(List)
输入列表,从第一个开拼接''里面的字符到最后一个,不包括开头和结尾。
"-".join("GNU/Linux is great".split())
在上面的例子中,我们基于空格 " " 分割字符串 "GNU/Linux is great",然后用 "-" 连接它们。

strip(chars)
用来剥离字符串首尾中指定的字符,不指定参数则默认剥离掉首尾的空格和换行符

lstrip(chars) 或 rstrip(chars)
只对字符串左或右剥离
s = "www.foss.in"
s.lstrip("cwsd.") #删除在字符串左边出现的'c','w','s','d','.'字符
s.rstrip("cnwdi.") #删除在字符串右边出现的'c','n','w','d','i','.'字符
 
find(str)
找到第一个匹配的字符,返回该字符的索引位置,没有找到则返回 -1

z = s[::-1]
把输入的字符串s 进行倒序处理形成新的字符串z
将字符串中任意多个空格变为一个空格
text = re.sub(' +', ' ', text)
判断是否包含(全是)中英文
# 是否全是中文
def is_Chinese(word):
    for ch in word:
        if '\u4e00' <= ch <= '\u9fff':
            return True
    return False

# 是否包含中文
def is_include_Chinese(text):
    if sum([1 if u'\u4e00' <= i <= u'\u9fff' else 0 for i in text]) > 0:
        return True
    else:
        return False

# 是否全是英文
import re


def iter_all_english(strs):
    """循环判断"""
    import string
    for i in strs:
        if i not in string.ascii_lowercase + string.ascii_uppercase:
            return False
    return True


def re_all_english(s):
    """正则判断"""
    p = re.compile(r"^[a-zA-Z]+$")
    if re.match(p, s):
        return True
    else:
        return False


print(iter_all_english("hello"))
print(iter_all_english("hello你好"))
print(re_all_english("apple"))
print(re_all_english("你好"))

# 是否包含英文
import re
def is_contains_english(str):
    my_re = re.compile(r'[A-Za-z]', re.S)
    res = re.findall(my_re, str)
    if len(res):
        return True
    else:
        return False

print(is_contains_english("hello"))
print(is_contains_english("hello你好"))
print(is_contains_english("123456"))
print(is_contains_english("你好"))
将字符串中所有连续重复的字符只保留一个
# 例如:aaacdefbbb  -> acdefb
def removeRepeat(s):
    lst = list(s)
    n = len(lst)
    if n <= 1:
        return s
    not_repeat_list = []
    # 只保留相邻不重复的文本
    for i in range(n - 1):
        if lst[i] != lst[i + 1]:
            not_repeat_list.append(lst[i])
    not_repeat_list.append(lst[-1])
    res = ''.join(not_repeat_list)
    return res
不定长连续重复字符串判断
# 思路: 对字符串进行分词去重操作,看不重复词的数量以及去重后新词组和原词组的比值
# 例: 
import jieba
import re
t0 = "九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读九书网提供分享阅读"
def setTextCount(text):
    # 去除英文及标点符号
    subtext = re.sub(r"[a-zA-Z0-9%$#.(),?。]", "", text)
    # 将文本进行jieba分词
    old = list(jieba.cut_for_search(subtext))
    # 去重分词后的文本
    new = list(set(old))
    # 根据剩余词数量判断
    if len(new) <= 10:
        return False
    # 根据剩余词语数量占原词语数量的百分比判断
    elif len(new) / len(old) < 0.1:
        return False  
    else:
        return True
字符串中中文所占的百分比
def percentage_Chineses(text):
    percen = sum([1 if u'\u4e00' <= i <= u'\u9fff' else 0 for i in text]) / len(text)
    return percen
正则表达式匹配数字和字母组合,且不能为纯数字或纯字母
"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$""
比较两个字符串的相似度
from fuzzywuzzy import fuzz
t1 = "答案错7驾驶人要按照驾驶证载明的准驾车型驾驶车辆。答案对8行车中前方遇自行车影响通行时,可鸣喇叭提示,加速绕行。答案错9在大雨天行车,为避免发生水滑而造成危险,要控制速度行驶。答案对10对未取得驾驶证驾驶机动车的,追究其法律责任。答案对"
t2 = "答案错7使用其他机动车号牌行驶证的一次记3分。答案错8行车中前方遇自行车影响通行时,可鸣喇叭提示,加速绕行。答案错9驾驶人将机动车交给驾驶证被暂扣的人驾驶的,交通警察给予口头警告。答案错10对未取得驾驶证驾驶机动车的,追究其法律责任。答案对"
r1 = fuzz.ratio(t1, t2)
print(r1)
jieba判断词性
from jieba import posseg
s = "行车中前方遇自行车影响通行时"
pos = posseg.cut(s)
for w, flag in pos:
    print(w, flag)
变形词检查
# 想检查一对字符串中,其中一个字符串是否是另一个字符串的变形词
from collections import Counter
s1 = "listen"
s2 = "lstnie"
res = Counter(s1) == Counter(s2)
print(res)
生成四位验证码
import string
import random

length = 4
al = string.ascii_letters
di = string.digits
print(al, di)
li = random.sample(al + di, length)
print(li)
判断整数、小数、百分数
def is_number(s):
    if s.count(".") == 1 and s[-1] != "%":  # 小数的判断
        if s[0] == "-":
            s = s[1:]
        if s[0] == ".":
            return False
        s = s.replace(".", "")
        for i in s:
            if i not in "0123456789":
                return False
        else:  # 这个else与for对应的
            return True
    elif s.count(".") == 0 and s[-1] != "%":  # 整数的判断
        if s[0] == "-":
            s = s[1:]
        for i in s:
            if i not in "0123456789":
                return False
        else:
            return True
    elif s[-1] == "%":  # 百分数判断
        return True

    else:
        return False


print(is_number("1334345345"))
print(is_number("1.12344565"))
print(is_number("-14344343"))
print(is_number("-1.123456"))
print(is_number("10%"))
print(is_number("nihao"))
print(is_number("你好"))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python字符串处理是指对字符串进行各种操作和处理的技术。Python提供了丰富的字符串处理方法和函数,可以方便地进行字符串的拼接、切片、查找、替换等操作。 以下是一些常用的Python字符串处理方法和函数: 1. 字符串拼接:使用"+"运算符可以将两个字符串拼接在一起,例如:`str1 + str2`。 2. 字符串切片:可以通过索引来获取字符串中的部分内容。例如,`str[1:5]`表示获取从索引1到索引4的子字符串。 3. 字符串长度:使用`len()`函数可以获取字符串的长度,例如:`len(str)`。 4. 字符串查找:可以使用`find()`、`index()`等方法来查找字符串中某个子串的位置。例如,`str.find(sub_str)`返回子串在字符串中第一次出现的位置。 5. 字符串替换:使用`replace()`方法可以将字符串中的某个子串替换为另一个子串。例如,`str.replace(old_str, new_str)`将字符串中的old_str替换为new_str。 6. 字符串分割:使用`split()`方法可以将字符串按照指定的分隔符进行分割,返回一个列表。例如,`str.split(separator)`将字符串按照separator进行分割。 7. 字符串大小写转换:使用`lower()`、`upper()`等方法可以将字符串转换为小写或大写形式。例如,`str.lower()`将字符串转换为小写形。 8. 字符串格式化:使用`format()`方法可以将变量的值插入到字符串中的占位符位置。例如,`"Hello, {}!".format(name)`将name的值插入到字符串中的占位符位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值