gpt4 book ai didi

python - 如何使用正则表达式提取第二个字符串(空格后)?

转载 作者:行者123 更新时间:2023-11-28 21:04:19 26 4
gpt4 key购买 nike

我有返回数据的代码,如下所示:

['WKU  D02807750\n', 'WKU  D02807769\n', 'WKU  D02807777\n', 'WKU  D02807785\n']

我想在创建列表的循环中使用正则表达式,如下所示:

import re
pat_nos = []
for line in open('file.txt'):
if pat_no in line:
pat_nos.append(line)
print(pat_nos)

以便它返回一个列表,如:

['D02807750', 'D02807769', 'D02807777', 'D02807785']

我知道在追加时我需要在“行”上使用正则表达式,但我不确定如何使用正则表达式在文本后的最后一个空格之间拆分所有内容(“后可能有 1 个或两个空格” WKU"),但我想要的东西总是以字母数字字符开头,并且总是以换行符结尾

最佳答案

只需使用 str.split() 并获取最后一个元素来构建列表理解

l = ['WKU  D02807750\n', 'WKU  D02807769\n', 'WKU  D02807777\n', 'WKU  D02807785\n']

print([x.split()[-1] for x in l])

请注意,换行符会被忽略,因为 split 是在没有参数的情况下调用的:根据 1 个或多个空格字符(制表符、空格、换行符...)进行拆分

结果:

['D02807750', 'D02807769', 'D02807777', 'D02807785']

(使用 regex 做这个更复杂:[re.split("",x)[-1].strip() for x in l],因为 regex split 不会下降空字段)

编辑:如果您想返回第一项以外的所有内容,则需要另一种技术。你可以 split() 然后 join():

[" ".join(x.split()[1:]) for x in l]

或者限制split操作的数量(之后需要strip):

[x.split(maxsplit=1)[-1].strip() for x in l]

或者您可以使用 partition 根据找到的第一个空格进行拆分,然后使用 strip() 结果删除前导和尾随空白:

[x.partition(" ")[2].strip() for x in l]

with l = ['WKU D 02807750\n', 'WKU D 02807769\n', 'WKU D02807777\n', 'WKU D02807785\n']
你得到 ['D 02807750', 'D 02807769', 'D02807777', 'D02807785']

关于python - 如何使用正则表达式提取第二个字符串(空格后)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45446020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com