目前,我正在解析简历,只有在每行的开头使用时才删除“ - ” . 我已经尝试在分割文本后识别每个字符串的第一个字符 . 以下是我的代码:
for line in text.split('\n'):
if line[0] == "-":
line[0] = line.replace('-', ' ')
line是一个字符串 . 这是我的思维方式,但每次运行时,我都会收到错误 IndexError: string index out of range
. 我不确定为什么,因为它是一个字符串,应该识别第一个元素 . 谢谢!
2 回答
你得到的问题是因为有些行是空的 .
那你的替换是错的:
首先
因为它将分配行的第一个"character"但是你不能更改字符串,因为它是不可变的
秒因为替换值是整个字符串减去一些破折号
第三,因为
line
在下一次迭代时丢失了 . 顺便说一句,原来的行列表也是如此 .如果要删除字符串的第一个字符,不需要
replace
,只需对字符串进行切片(不要冒险删除其他类似字符) .一个可行的解决方案是使用
startswith
进行测试并重建一个新的字符串列表 . 然后加入吧结果:
有了更多经验,您可以将此代码打包到列表理解中:
最后,正则表达式模块也是一个不错的选择:
这将删除以dash开头的所有行的短划线 . 多行标志告诉正则表达式引擎将
^
视为行的开头,而不是缓冲区的开头 .这可能是由于空行 . 您可以在获取索引之前检查长度 .