我使用Python3在文本文件中搜索字符串,但我无法检索匹配的最后一个字段。知道什么是错的吗?这是我的代码:
shakes = open("CFTUTIL_idparm0.log","r")
for line in shakes:
if re.match("(.*) Local partner identifier (.*)", line):
myPart = line.split(" ")[-2]
print (myPart,end="",flush=True)
print(type(line))
此代码适用于除此test file以外的其他文件。
答案 0 :(得分:0)
即使所有分隔符都是空格,不确定为什么因为分隔符是空格,如果我以十六进制转储行。
split(' ')
和split()
也会产生非常不同的结果。
为了说明,让我们从您的文件中删除一行:
>>> line = ' Local partner identifier PART = W096952B \n'
现在,让我们将它拆分为空格:
>>> line.split(' ')
['', '', '', '', '', '', '', '', '', '', 'Local', 'partner', 'identifier', '', '', '', 'PART', '', '', '', '', '=', 'W096952B', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\n']
现在,让我们把它分开,而不是split
:
>>> line.split()
['Local', 'partner', 'identifier', 'PART', '=', 'W096952B']
这两者非常不同。因此,当您获取拆分的最后一个元素时,会检索到非常不同的结果:
>>> line.split()[-1]
'W096952B'
>>> line.split(' ')[-1]
'\n'
解决方案是使用split()
而不是split(' ')
。
您可以使用python的交互式文档了解split
的行为。在命令提示符下运行help(line.split)
会产生:
有关内置功能拆分的帮助(强调添加):
有关内置功能拆分的帮助:
分裂(...)
S.split([sep [,maxsplit]]) - >字符串列表返回S中单词的列表,使用sep作为 分隔符字符串。如果给出maxsplit,最多是maxsplit 分裂完成。 如果未指定sep或者为None,则为any 空白字符串是一个分隔符,空字符串是 从结果中删除。
注意最后一行:只有在未指定sep
或None时才会删除空字符串。将sep指定为' '
后,将包含所有空字符串,如上所示。