当前位置:   article > 正文

第二章:25+ Python 数据操作教程(第十一PYTHON 中的字符串函数及示例)_python用函数求前驱和后继字符

python用函数求前驱和后继字符
本教程概述了 Python 中使用的各种字符串(字符)函数。为了操作字符串和字符值,Python 有几个内置函数。这意味着您不需要导入或依赖任何外部包来处理 Python 中的字符串数据类型。这是使用 Python 相对于其他数据科学工具的优势之一。处理字符串值在现实世界中非常常见。假设您有客户的全名,并且您的经理要求您提取客户的名字和姓氏。或者您想要获取代码以“QT”开头的所有产品的信息。

目录

常用字符串函数列表

左、右和中功能

从字符串中提取单词

Pandas DataFrame 中的 SQL LIKE 运算符

查找特定字符或关键字的位置

替换子串

查找字符串的长度

转换为小写和大写

删除前导和尾随空格

将数字转换为字符串

连接或连接字符串

Pandas 中的 SQL IN 运算符

从字符串中提取特定模式


常用字符串函数列表

下表显示了许多常见的字符串函数及其说明及其在 MS Excel 中的等效函数。我们在工作场所都使用MS Excel,并且熟悉MS Excel中使用的功能。MS EXCEL和Python中字符串函数的比较可以帮助你快速学习函数并在面试前做好准备。
功能描述MS Excel 函数
字符串[:N]从字符串开头提取 N 个字符。左边( )
mystring[-N:]从字符串末尾提取 N 个字符正确的( )
字符串[X:Y]从字符串中间提取字符,从 X 位置开始,以 Y 结束中( )
str.split(sep=' ')分割字符串-
str.replace(旧子字符串,新子字符串)用不同的子字符串替换部分文本代替( )
str.lower()将字符转换为小写降低( )
str.upper()将字符转换为大写上部( )
str.contains('模式', case=False)检查模式是否匹配(Pandas 函数)SQL LIKE 运算符
str.extract(正则表达式)返回匹配的值(Pandas 函数)-
str.count('sub_string')计算字符串中模式的出现次数-
字符串查找()返回子字符串或模式的位置寻找( )
str.isalnum()检查字符串是否仅由字母数字字符组成-
str.islower()检查字符是否全部小写-
str.isupper()检查字符是否全部大写-
str.isnumeric()检查字符串是否仅由数字字符组成-
str.isspace()检查字符串是否仅由空格字符组成-
长度()计算字符串长度LEN( )
猫( )连接字符串(Pandas 函数)连接( )
分隔符.join(str)连接字符串连接( )

左、右和中功能

如果您是 MS Excel 中级用户,您一定使用过 LEFT、RIGHT 和 MID 函数。这些函数用于从字符串中提取 N 个字符或字母。
1. 从字符串开头提取前两个字符
  1. mystring = "Hey buddy, wassup?"
  2. mystring[:2]
Out[1]: 'He'
  1. string[start:stop:step] 表示项目从 0(默认)开始到(stop-1),步长为 1(默认)。
  2. mystring[:2] 相当于 mystring[0:2]
  3. mystring[:2] 告诉 Python 从字符串对象中提取前 2 个字符mystring
  4. 索引从零开始,因此它包括第一个、第二个元素,但不包括第三个元素。
2. 查找字符串的最后两个字符
mystring[-2:]
上面的命令返回p?-2开始从倒数第二个位置到字符串最大长度的范围。
3. 从字符串中间查找字符
mystring[1:3]
Out[1]: 'ey'
mystring[1:3]返回第二个和第三个字符。1指第二个字符,因为索引从 0 开始。
4. 如何反转字符串?
mystring[::-1]
Out[1]: '?pussaw,yddub yeH'
-1告诉 Python 从末尾开始,并从右到左加 1。
5. 如何从 Pandas DataFrame 中的字符串变量中提取字符?
让我们创建一个假数据框来进行说明。在下面的代码中,我们创建一个名为的数据框df,仅包含 1 个名为var1, 将 pandas 导入为 pd
  1. import pandas as pd
  2. df = pd.DataFrame({"var1": ["A_2", "B_1", "C_2", "A_2"]})
  1. var1
  2. 0 A_2
  3. 1 B_1
  4. 2 C_2
  5. 3 A_2
为了处理Python Pandas Dataframe中的文本数据,我们可以使用str属性。它可用于切片字符值。
df['var1'].str[0]
在本例中,我们从变量中获取第一个字符var1。请参阅下面所示的输出。
  1. Output
  2. 0 A
  3. 1 B
  4. 2 C
  5. 3 A

从字符串中提取单词

假设您需要从字符串中取出单词而不是字符。通常我们将一个空格作为分隔符来从字符串中查找单词。
1. 查找字符串的第一个单词
mystring.split()[0]
Out[1]: 'Hey'
怎么运行的?
  1. split()函数使用空格作为默认分隔符来中断字符串
  2. mystring.split()回报 ['Hey', 'buddy,', 'wassup?']
  3. 0返回第一个项目或单词 Hey
2. 逗号作为单词的分隔符
mystring.split(',')[0]
Out[1]: 'Hey buddy'
3. 如何提取最后一个单词
mystring.split()[-1]
Out[1]: 'wassup?'
4. 如何提取DataFrame中的单词
让我们构建一个由客户姓名组成的虚拟数据框并将其称为变量custname
mydf = pd.DataFrame({"custname": ["Priya_Sehgal", "David_Stevart", "Kasia_Woja", "Sandy_Dave"]})
  1. custname
  2. 0 Priya_Sehgal
  3. 1 David_Stevart
  4. 2 Kasia_Woja
  5. 3 Sandy_Dave
  1. #First Word
  2. mydf['fname'] = mydf['custname'].str.split('_').str[0]
  3. #Last Word
  4. mydf['lname'] = mydf['custname'].str.split('_').str[1]
详细说明
  1. str.split( )类似于split( ). 它用于激活Python中pandas数据框的分割功能。
  2. 在上面的代码中,我们创建了两个新列,名为fnamelname存储名字和姓氏。

Pandas DataFrame 中的 SQL LIKE 运算符

在 SQL 中,LIKE 语句用于查找字符串是否匹配或包含模式。我们可以在 python 中使用str.contains( )function 来实现类似的功能。
  1. df2 = pd.DataFrame({"var1": ["AA_2", "B_1", "C_2", "a_2"],
  2. “var2”:[“X_2”,“Y_1”,“Z_2”,“X2”]})
  1. var1 var2
  2. 0 AA_2 X_2
  3. 1 B_1 Y_1
  4. 2 C_2 Z_2
  5. 3 a_2 X2
如何在变量 var1 中查找包含 A 或 B 的行?
df2['var1'].str.contains('A|B')
str.contains(pattern)用于匹配 Pandas Dataframe 中的模式。
输出
0 正确
1 真实
2 错误
3 错误
  1. Output
  2. 0 True
  3. 1 True
  4. 2 False
  5. 3 False

由于函数区分大小写,因此上述命令对第四行返回FALSE 。为了忽略大小写,我们可以使用case=False参数。请参阅下面的工作示例。
df2['var1'].str.contains('A|B', case=False)
如何过滤包含特定模式的行?
在下面的程序中,我们要求 Python 根据条件对数据进行子集化 - 包含字符值 A 或 B。它相当于 SQL 中的 WHERE 关键字。
df2[df2['var1'].str.contains('A|B', case=False)]
输出 
 变量1 变量2
0 AA_2 X_2
1 B_1 Y_1
3 a_2 X2
  1. var1 var2
  2. 0 AA_2 X_2
  3. 1 B_1 Y_1
  4. 3 a_2 X2
假设您只需要那些字母后跟“_”的值
df2[df2['var1'].str.contains('^[AZ]_', case=False)]
^是正则表达式的标记,表示以特定项目开始。
  变量1 变量2
1 B_1 Y_1
2 C_2 Z_2
3 a_2 X2
  1. var1 var2
  2. 1 B_1 Y_1
  3. 2 C_2 Z_2
  4. 3 a_2 X2

查找特定字符或关键字的位置

str.find(pattern)用于查找子字符串的位置。在本例中,子字符串是“_”。
df2['var1'].str.find('_')
  1. 0 2
  2. 1 1
  3. 2 1
  4. 3 1

替换子串

str.replace(old_text,new_text,case=False)用于用一些新值或模式替换特定字符或模式。在下面的代码中,我们将变量 var1 中的 _ 替换为 -- 。
df2['var1'].str.replace('_', '--', case=False)
输出
  1. 0 AA--2
  2. 1 B--1
  3. 2C--2
  4. 3A--2
我们还可以像下面的程序一样复杂的模式。+表示某项出现一次或多次。在这种情况下,字母表出现 1 次或多次。
df2['var1'].str.replace('[AZ]+_', 'X', case=False)
  1. 0 X2
  2. 1 X1
  3. 2 X2
  4. 3 X2

查找字符串的长度

len(string)用于计算字符串的长度。在 pandas 数据框中,您可以申请str.len()相同的。
df2['var1'].str.len()
  1. Output
  2. 0 AA--2
  3. 1 B--1
  4. 2 C--2
  5. 3 A--2
要查找特定字符的出现次数(例如,每行中出现“A”的次数),您可以使用str.count(pattern)function.
df2['var1'].str.count('A')

转换为小写和大写

str.lower()str.upper()函数用于将字符串转换为小写和大写值。
#转换为小写
mydf['custname'].str.lower()

#转换为大写
mydf['custname'].str.upper()
  1. #Convert to lower case
  2. mydf['custname'].str.lower()
  3. #Convert to upper case
  4. mydf['custname'].str.upper()

删除前导和尾随空格

  1. str.strip()删除前导和尾随空格。
  2. str.lstrip()删除前导空格(在开头)。
  3. str.rstrip()删除尾随空格(在末尾)
    1. df1 = pd.DataFrame({'y1': [' jack', 'jill ', ' jesse ', 'frank ']})
    2. df1['both']=df1['y1'].str.strip()
    3. df1['left']=df1['y1'].str.lstrip()
    4. df1['right']=df1['y1'].str.rstrip()
    1. y1 both left right
    2. 0 jack jack jack jack
    3. 1 jill jill jill jill
    4. 2 jesse jesse jesse jesse
    5. 3 frank frank frank frank

将数字转换为字符串

通过使用str( )函数,您可以将数值转换为字符串。
  1. myvariable = 4
  2. mystr = str(myvariable)

连接或连接字符串

只需使用+,您就可以连接两个字符串值。
DeepanshuBhalla
如果您想在两个字符串之间添加空格,可以使用 - x+' '+yreturnsDeepanshu Bhalla 假设您有一个包含多个字符串值的列表,并且您想要将它们组合起来。您可以使用join( )函数。
  1. string0 = ['Ram', 'Kumar', 'Singh']
  2. ' '.join(string0)
  1. Output
  2. 'Ram Kumar Singh'
假设您想要组合或连接 pandas 数据框的两列。
mydf['全名'] = mydf['fname'] + ' ' + mydf['lname']
或者
mydf['fullname'] = mydf[['fname', 'lname']].apply(lambda x: ' '.join(x), axis=1)
  1. custname fname lname fullname
  2. 0 Priya_Sehgal Priya Sehgal Priya Sehgal
  3. 1 David_Stevart David Stevart David Stevart
  4. 2 Kasia_Woja Kasia Woja Kasia Woja
  5. 3 Sandy_Dave Sandy Dave Sandy Dave

Pandas 中的 SQL IN 运算符

我们可以使用isin(list)函数在过滤或子集标准中包含多个值。
mydata = pd.DataFrame({'产品': ['A', 'B', 'B', 'C', 'C', 'D', 'A']})
mydata[mydata['产品'].isin(['A', 'B'])]
  1. mydata = pd.DataFrame({'product': ['A', 'B', 'B', 'C','C','D','A']})
  2. mydata[mydata['product'].isin(['A', 'B'])]
  1. product
  2. 0 A
  3. 1 B
  4. 2 B
  5. 6 A
如何在选择多个值时应用 NOT 条件?
我们可以使用sign~告诉python否定条件。
mydata[~mydata['product'].isin(['A', 'B'])]

从字符串中提取特定模式

str.extract(r'regex-pattern')用于此任务。
df2['var1'].str.extract(r'(^[A-Z]_)')
r'(^[A-Z]_)'表示以 AZ 开头,后跟“_”
  1. 0 NaN
  2. 1 B_
  3. 2 C_
  4. 3 NaN
为了删除缺失值,我们可以使用dropna( )函数。
df2['var1'].str.extract(r'(^[AZ]_)').dropna()

相关文章
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/549761
推荐阅读
相关标签
  

闽ICP备14008679号