深度剖析华为Python笔试题,竟解锁12种正则表达式技巧?
- 内容介绍
- 文章标签
- 相关推荐
本文共计824个文字,预计阅读时间需要4分钟。
家好,这里是程序员工会晚宴。今天,我们将用一道华为笔试题来深入掌握一项Python技巧:正则表达式。
一、题目解析本题要求我们使用正则表达式完成某个特定的字符串处理任务。
二、常用方法
1.匹配特定字符:使用`re.match()`或`re.search()`方法,配合`re.compile()`预编译正则表达式。
2.查找所有匹配项:使用`re.findall()`方法。
3.替换字符串:使用`re.sub()`方法。
三、专业方法
1.分组:使用括号`()`创建分组,以便对特定部分进行操作。
2.量词:使用`*`、`+`、`?`等量词来指定匹配次数。
3.预定义字符集:使用`[]`定义字符集,如`[a-zA-Z]`匹配所有字母。
四、注意事项
1.转义字符:正则表达式中的特殊字符需要转义,如`\d`表示数字。
2.大小写敏感:默认情况下,正则表达式是大小写敏感的,可以使用`re.IGNORECASE`忽略大小写。
3.边界匹配:使用`^`和`$`分别表示字符串的开始和结束。
通过以上方法,我们可以灵活地使用正则表达式处理各种字符串任务。
大家好,这里是程序员晚枫。
今天用一道华为笔试题,带大家深入掌握一项Python技巧:正则表达式。
本文主要分为4个部分:题目解析、常用方法、专业方法、注意事项
一、题目解析
先来看一下题目。
看完题目,有以下2个解题思路:
1、思路1:纯手写
def cut_8ch(str): if len(str) < 8: str = str.ljust(8, '0') elif len(str) > 8: if (len(str) % 8) != 0: width = len(str) + (8 - len(str) % 8) str = str.ljust(width, '0') str2List = [] i = 0 while i < len(str): if (i + 8) < len(str): str2List.append(str[i:i+8]) else: str2List.append(str[i:len(str)]) break i = i + 8 return str2Listoutput = []tmp = input('请输入字符串-->>').strip()output.append(cut_8ch(tmp))
for x in output:for y in x:print(y)
### 2、思路2:使用内置方法和标准库 ```python import re str = input('请输入字符串-->>') if len(s) % 8 != 0: s = s.ljust(len(s) + (8 - len(s) % 8), str(0)) res = re.findall('.{8}', s) [print(r) for r in res]很明显,思路2实现起来,逻辑更清晰,代码更简洁。原因在哪里呢?
今天我们重点讲一下re模块的使用。关于str的所有自带方法,如果大家想看的话,可以在评论区告诉我,我可以另写一个篇新的文章来介绍。
二、常用方法
按照惯例,我们对Python知识的解析,直接拿源码来研究。先看一下python源码里,re模块提供的12个方法
本文共计824个文字,预计阅读时间需要4分钟。
家好,这里是程序员工会晚宴。今天,我们将用一道华为笔试题来深入掌握一项Python技巧:正则表达式。
一、题目解析本题要求我们使用正则表达式完成某个特定的字符串处理任务。
二、常用方法
1.匹配特定字符:使用`re.match()`或`re.search()`方法,配合`re.compile()`预编译正则表达式。
2.查找所有匹配项:使用`re.findall()`方法。
3.替换字符串:使用`re.sub()`方法。
三、专业方法
1.分组:使用括号`()`创建分组,以便对特定部分进行操作。
2.量词:使用`*`、`+`、`?`等量词来指定匹配次数。
3.预定义字符集:使用`[]`定义字符集,如`[a-zA-Z]`匹配所有字母。
四、注意事项
1.转义字符:正则表达式中的特殊字符需要转义,如`\d`表示数字。
2.大小写敏感:默认情况下,正则表达式是大小写敏感的,可以使用`re.IGNORECASE`忽略大小写。
3.边界匹配:使用`^`和`$`分别表示字符串的开始和结束。
通过以上方法,我们可以灵活地使用正则表达式处理各种字符串任务。
大家好,这里是程序员晚枫。
今天用一道华为笔试题,带大家深入掌握一项Python技巧:正则表达式。
本文主要分为4个部分:题目解析、常用方法、专业方法、注意事项
一、题目解析
先来看一下题目。
看完题目,有以下2个解题思路:
1、思路1:纯手写
def cut_8ch(str): if len(str) < 8: str = str.ljust(8, '0') elif len(str) > 8: if (len(str) % 8) != 0: width = len(str) + (8 - len(str) % 8) str = str.ljust(width, '0') str2List = [] i = 0 while i < len(str): if (i + 8) < len(str): str2List.append(str[i:i+8]) else: str2List.append(str[i:len(str)]) break i = i + 8 return str2Listoutput = []tmp = input('请输入字符串-->>').strip()output.append(cut_8ch(tmp))
for x in output:for y in x:print(y)
### 2、思路2:使用内置方法和标准库 ```python import re str = input('请输入字符串-->>') if len(s) % 8 != 0: s = s.ljust(len(s) + (8 - len(s) % 8), str(0)) res = re.findall('.{8}', s) [print(r) for r in res]很明显,思路2实现起来,逻辑更清晰,代码更简洁。原因在哪里呢?
今天我们重点讲一下re模块的使用。关于str的所有自带方法,如果大家想看的话,可以在评论区告诉我,我可以另写一个篇新的文章来介绍。
二、常用方法
按照惯例,我们对Python知识的解析,直接拿源码来研究。先看一下python源码里,re模块提供的12个方法

