我有一个返回如下数据的代码:
['WKU D02807750\n', 'WKU D02807769\n', 'WKU D02807777\n', 'WKU D02807785\n']
我想在创建列表的循环中使用regex,如下所示:
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']
我知道在追加时需要在“行”上使用regex,但我不确定如何使用regex在文本后面的最后一个空格(WKU后面可能有1到2个空格)之间拆分所有内容,但我想要的东西总是以字母数字字符开头,总是以换行结束
因为你想用正则表达式
如果保证它始终是字符串中的最后一个子字符串,则只需使用
split()
,例如:输出:
如果不能保证它是最后一个子字符串,并且您希望使用regex,则可以使用以下命令:
输出:
只需使用
str.split()
和最后一个元素构建一个列表理解请注意,linefeed被忽略,因为
split
是在没有参数的情况下调用的:根据1个或多个空格字符(制表符、空格、换行符…)进行拆分结果:
(使用regex这样做更复杂:
[re.split(" ",x)[-1].strip() for x in l]
,因为regex split不会删除空字段)编辑:如果您想返回所有但第一项,则需要另一种技术。你可以
split()
然后join()
:或者限制
split
操作的数量(之后需要strip
):或者可以使用
partition
根据找到的第一个空格进行拆分,然后使用strip()
结果删除前导空格和尾随空格:与
l = ['WKU D 02807750\n', 'WKU D 02807769\n', 'WKU D02807777\n', 'WKU D02807785\n']
你得到['D 02807750', 'D 02807769', 'D02807777', 'D02807785']
相关问题 更多 >
编程相关推荐