在MATLAB和Python中,可以使用关系运算符比较字符串,也可以使用提供的各种函数比较字符串。[大谦MATLAB,dqmatlab点com]
使用关系运算符进行比较
【MATLAB】
MATLAB中,可以使用关系运算符直接对字符串进行比较。关系运算符包括<, <=, >, >=, =和~=等。使用关系运算符比较两个字符串时,从头开始逐个比较两个字符串的字符,根据第1个不同字符的比较结果得到两个字符串比较的结果。
下面给定两个字符串,比较第1个字符串是否小于第2个字符串。给定两个字符串。
>> a="abc";
>> b="abc123";
判断两个字符串是否相等。
>> a==b
ans =
logical
0
返回0,说明它们不相等。
判断两个字符串是否不相等。
>> a~=b
ans =
logical
1
返回1,说明它们不相等。
【Python】
Python中,使用关系运算符、成员运算符和字符串相关的函数和方法进行字符串比较。
下面用==或!=比较两个字符串对象的值相等或不相等。
>>> a='abc'
>>> b='abc123'
>>> a==b #值相等时返回True
False
>>> a!=b #值不相等时返回True
True
使用函数进行比较
【MATLAB】
MATLAB中可以使用strcmp, strcmpi, strncmp和strncmpi等函数比较字符串是否相同。
下面给定两个字符串a和b。
>> a="abcde";
>> b="abcDE123";
用strcmp函数判断a和b是否相同。
>> strcmp(a,b)
ans =
logical
0
返回0,说明a和b不相同。
用strncmp函数判断a和b的前5个字符是否相同。默认时有大小写区分。
>> strncmp(a,b,5)
ans =
logical
0
返回0,说明a和b的前5个字符不相同。
用strncmpi函数判断a和b的前5个字符是否相同。该函数不区分大小写。
>> strncmpi(a,b,5)
ans =
logical
1
返回1,说明不区分大小写时a和b的前5个字符相同。
【Python】
Python 3中没有功能类似MATLAB中strcomp函数的函数,实现类似的功能可以使用operator模块中的相关函数,如表5-7中所示。注意,这些函数比较字符串的大小时,是按字符串中的字母逐个比较的。比较时先获取字母对应的ASCII码,然后比较该数字的大小。
表5-7 用operator模块中的函数比较字符串
| 函 数 | 说 明 |
|---|---|
| operator.lt(str1, str2) | str1小于str2时返回True, 否则返回False |
| operator.le(str1, str2) | str1小于或等于str2时返回True, 否则返回False |
| operator.eq(str1, str2) | str1等于str2时返回True, 否则返回False |
| operator.ne(str1, str2) | str1不等于str2时返回True, 否则返回False |
| operator.gt(str1, str2) | str1大于str2时返回True, 否则返回False |
| operator.ge(str1, str2) | str1大于或等于str2时返回True, 否则返回False |
下面导入operator模块并使用模块中的函数比较给定字符串的大小。
>>> import operator as op
>>> op.lt('a';,'b') #'a'是否比'b'小
True
>>> op.eq('a123','a12b') #'a123'与'a12b'是否相等
False
>>> op.ge('forpython',27;forvba') #'forpython'是否大于或等于'forvba'
False
Python提供的其他一些进行字符串比较的函数如表5-8所示。可以用它们判断字符串中元素的类型和大小写等情况。
表5-8 进行字符串比较的函数
| 函数 | 说 明 |
|---|---|
| str.isalnum() | 字符串中全是数字或字母 |
| str.isalpha() | 字符串中至少有一个字母并且全是字母 |
| str.isdigit() | 字符串中全是数字 |
| str.isnumeric() | 字符串中全是数字 |
| str.islower() | 字符串中全是否为小写字母 |
| str.isupper() | 字符串中全是否为大写字母 |
| str.isspace() | 字符串中只包含空格,返回True,否则返回False |
max() |
最大的字母 |
min() |
最小的字母 |
下面举例说明:
>>> 'Abc123'.isalnum() #字符串全是字母和数字
True
>>> 'Abc123'.isalpha() #是否全是字母
False
>>> '123123'.isdigit() #是否全是数字
True
>>> '123.123'.isnumeric() #是否全是数字
False
>>> 'abc'.islower() #字母是否全是小写
True
>>> max('Abc') #最大的字母
'c'