面试题答案
一键面试实现思路
- 按行拆分字符串:使用
splitlines()
函数将字符串按行拆分成列表。 - 处理每行文本:
- 去除行首和行尾空白字符:使用
strip()
函数。 - 替换行内连续空白字符为单个空格:使用
re
模块的sub()
函数,通过正则表达式匹配连续的空白字符序列并替换为单个空格。
- 去除行首和行尾空白字符:使用
- 处理编码问题:在读取和处理字符串时,确保使用合适的编码方式。在Python 3中,字符串默认以Unicode编码,处理时无需额外转换,但在读取文件或处理外部输入时,要指定正确的编码,如
open(file_path, 'r', encoding='utf-8')
。
Python字符串处理函数
splitlines()
:将字符串按行拆分成列表,行边界符(如\n
,\r
,\r\n
)会被忽略。strip()
:返回去除字符串开头和结尾空白字符的副本。re.sub()
:在字符串中使用正则表达式替换匹配的子字符串。
编码处理函数
open()
:在读取文件时,通过encoding
参数指定文件的编码格式,如utf-8
,gbk
等。
代码示例
import re
def process_text(text):
lines = text.splitlines()
processed_lines = []
for line in lines:
line = line.strip()
line = re.sub(r'\s+',' ', line)
processed_lines.append(line)
return '\n'.join(processed_lines)
你可以使用以下方式调用函数处理不同编码格式的输入:
# 假设从文件读取,以UTF - 8编码为例
try:
with open('input.txt', 'r', encoding='utf-8') as f:
content = f.read()
result = process_text(content)
print(result)
except UnicodeDecodeError:
# 如果UTF - 8编码失败,尝试GBK编码
with open('input.txt', 'r', encoding='gbk') as f:
content = f.read()
result = process_text(content)
print(result)