常用字符串函数列表
下表显示了许多常见的字符串函数及其说明及其在 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() | 检查字符串是否仅由空格字符组成 | - |
| 仅有的( ) | 计算字符串长度 | 仅有的( ) |
| 猫( ) | 连接字符串(Pandas 函数) | 连接( ) |
| 分隔符.join(str) | 连接字符串 | 连接( ) |
左、右和中功能
如果您是 MS Excel 中级用户,您一定使用过 LEFT、RIGHT 和 MID 函数。这些函数用于从字符串中提取 N 个字符或字母。
1. 从字符串开头提取前两个字符
mystring = "Hey buddy, wassup?"
mystring[:2]
Out[1]: 'He'
string[start:stop:step]表示项目从 0(默认)开始到(stop-1),步长为 1(默认)。mystring[:2]相当于mystring[0:2]mystring[:2]告诉 Python 从字符串对象中提取前 2 个字符mystring。- 索引从零开始,因此它包括第一个、第二个元素,但不包括第三个元素。
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
import pandas as pd
df = pd.DataFrame({"var1": ["A_2", "B_1", "C_2", "A_2"]})
var1
0 A_2
1 B_1
2 C_2
3 A_2
为了处理Python Pandas Dataframe中的文本数据,我们可以使用str属性。它可用于切片字符值。
df['var1'].str[0]
在本例中,我们从变量中获取第一个字符var1。请参阅下面所示的输出。
Output
0 A
1 B
2 C
3 A
从字符串中提取单词
假设您需要从字符串中取出单词而不是字符。通常我们将一个空格作为分隔符来从字符串中查找单词。
1. 查找字符串的第一个单词
mystring.split()[0]
Out[1]: 'Hey'
怎么运行的?
split()函数使用空格作为默认分隔符来中断字符串mystring.split()回报['Hey', 'buddy,', 'wassup?']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"]})
custname
0 Priya_Sehgal
1 David_Stevart
2 Kasia_Woja
3 Sandy_Dave
#First Word
mydf['fname'] = mydf['custname'].str.split('_').str[0]
#Last Word
mydf['lname'] = mydf['custname'].str.split('_').str[1]
详细说明
Output
custname fname lname
0 Priya_Sehgal Priya Sehgal
1 David_Stevart David Stevart
2 Kasia_Woja Kasia Woja
3 Sandy_Dave Sandy Dave
str.split( )类似于split( ). 它用于激活Python中pandas数据框的分割功能。- 在上面的代码中,我们创建了两个新列,名为
fname并lname存储名字和姓氏。
Pandas DataFrame 中的 SQL LIKE 运算符
在 SQL 中,LIKE 语句用于查找字符串是否匹配或包含模式。我们可以在 python 中使用str.contains( )function 来实现类似的功能。
df2 = pd.DataFrame({"var1": ["AA_2", "B_1", "C_2", "a_2"],
“var2”:[“X_2”,“Y_1”,“Z_2”,“X2”]})
var1 var2
0 AA_2 X_2
1 B_1 Y_1
2 C_2 Z_2
3 a_2 X2
如何在变量 var1 中查找包含 A 或 B 的行?
df2['var1'].str.contains('A|B')
str.contains(pattern)用于匹配 Pandas Dataframe 中的模式。
Output
0 True
1 True
2 False
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)]
Output
var1 var2
0 AA_2 X_2
1 B_1 Y_1
3 a_2 X2
假设您只需要那些字母后跟“_”的值
df2[df2['var1'].str.contains('^[AZ]_', case=False)]
^是正则表达式的标记,表示以特定项目开始。
var1 var2
1 B_1 Y_1
2 C_2 Z_2
3 a_2 X2
查找特定字符或关键字的位置
str.find(pattern)用于查找子字符串的位置。在本例中,子字符串是“_”。
df2['var1'].str.find('_')
0 2
1 1
2 1
3 1
替换子串
str.replace(old_text,new_text,case=False)用于用一些新值或模式替换特定字符或模式。在下面的代码中,我们将变量 var1 中的 _ 替换为 -- 。
df2['var1'].str.replace('_', '--', case=False)
Output
0 AA--2
1 B--1
2 C--2
3 A--2
我们还可以像下面的程序一样复杂的模式。+表示某项出现一次或多次。在这种情况下,字母表出现 1 次或多次。
df2['var1'].str.replace('[AZ]+_', 'X', case=False)
0 X2
1 X1
2 X2
3 X2
查找字符串的长度
len(string)用于计算字符串的长度。在 pandas 数据框中,您可以申请str.len()相同的。
df2['var1'].str.len()
Output
0 4
1 3
2 3
3 3
要查找特定字符的出现次数(例如,每行中出现“A”的次数),您可以使用str.count(pattern)function.
df2['var1'].str.count('A')
转换为小写和大写
#Convert to lower case
mydf['custname'].str.lower()
#Convert to upper case
mydf['custname'].str.upper()
删除前导和尾随空格
1、str.strip()删除前导和尾随空格。2、str.lstrip()删除前导空格(在开头)。3、str.rstrip()删除尾随空格(在末尾)。
df1 = pd.DataFrame({'y1': [' jack', 'jill ', ' jesse ', 'frank ']})
df1['both']=df1['y1'].str.strip()
df1['left']=df1['y1'].str.lstrip()
df1['right']=df1['y1'].str.rstrip()
y1 both left right
0 jack jack jack jack
1 jill jill jill jill
2 jesse jesse jesse jesse
3 frank frank frank frank
将数字转换为字符串
通过使用str( )函数,您可以将数值转换为字符串。
myvariable = 4
mystr = str(myvariable)
连接或连接字符串
只需使用+,您就可以连接两个字符串值。
x = "Deepanshu"
y ="Bhalla"
x+y
DeepanshuBhalla
如果您想在两个字符串之间添加空格,可以使用 - x+' '+yreturnsDeepanshu Bhalla 假设您有一个包含多个字符串值的列表,并且您想要将它们组合起来。您可以使用join( ) 函数。
string0 = ['Ram', 'Kumar', 'Singh']
' '.join(string0)
Output
'Ram Kumar Singh'
假设您想要组合或连接 pandas 数据框的两列。
mydf['fullname'] = mydf['fname'] + ' ' + mydf['lname']
或者
mydf['fullname'] = mydf[['fname', 'lname']].apply(lambda x: ' '.join(x), axis=1)
custname fname lname fullname
0 Priya_Sehgal Priya Sehgal Priya Sehgal
1 David_Stevart David Stevart David Stevart
2 Kasia_Woja Kasia Woja Kasia Woja
3 Sandy_Dave Sandy Dave Sandy Dave
Pandas 中的 SQL IN 运算符
我们可以使用isin(list)函数在过滤或子集标准中包含多个值。
mydata = pd.DataFrame({'product': ['A', 'B', 'B', 'C','C','D','A']})
mydata[mydata['product'].isin(['A', 'B'])]
product
0 A
1 B
2 B
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 开头,后跟“_”
0 NaN
1 B_
2 C_
3 NaN
为了删除缺失值,我们可以使用dropna( )函数。
df2['var1'].str.extract(r'(^[AZ]_)').dropna()