Python新手:如何用split()提取第三个.与第一个:之间的子串?
用split()提取目标子串的解决方案
直接给你修正后的代码,再一步步说清原因:
for line in myfile: if "foo" in line: # 先按点分割,取第三个点之后的部分 part_after_third_dot = line.split('.')[3] # 再按冒号分割,取第一个冒号之前的部分 substring = part_after_third_dot.split(':')[0] print(substring)
为什么用这些索引?
Python的列表索引从0开始计数:
- 用
split('.')把字符串按点拆分后,得到的列表里:
索引0是第一个点之前的内容,索引1是第一个与第二个点之间的内容,索引2是第二个与第三个点之间的内容,索引3就是第三个点之后的所有内容(包含到冒号的部分)。 - 接着把这部分用
split(':')按冒号拆分,得到的列表里索引0就是第一个冒号之前的内容,也就是你要的第三个点和第一个冒号之间的子串。
举个例子验证
假设包含"foo"的行是:abc.def.ghi.jkl:mno
line.split('.')得到列表:['abc', 'def', 'ghi', 'jkl:mno']- 取索引3的元素:
'jkl:mno' - 再用
split(':')拆分得到:['jkl', 'mno'] - 取索引0的元素:
'jkl'——正好是第三个点和第一个冒号之间的内容。
内容的提问来源于stack exchange,提问作者pythonbeginner
相关产品推荐
相关产品推荐

