如何申请关于芬德尔到一个提供empyt lis的文件

2024-10-05 10:04:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下文本:

Is there any way to do removing the empty list while using re.findall

Started : Sunday, May 1, 2016 1:59:16 PM
Source : C:\RegularExpressionsWithDotNet\robocopytest\source\தமிழ்\हिन्दी\English
Dest : C:\RegularExpressionsWithDotNet\robocopytest\destn\
Started : Sunday, May 1, 2016 1:59:16 PM
Source : C:\RegularExpressionsWithDotNet\robocopytest\source\தமிழ்\हिन्दी\English
Dest : C:\RegularExpressionsWithDotNet\robocopytest\destn\

我的代码如下:

^{pr2}$

我的输出是[[], ['C:\\RegularExpressionsWithDotNet\\robocopytest\\source\\தமிழ்\\हिन्दी\\English'], [], [], ['C:\\RegularExpressionsWithDotNet\\robocopytest\\source\\தமிழ்\\हिन्दी\\English'], []]

用空的方式删除列表关于芬德尔在

如果我在做[line for line in open(file,'r',encoding='utf-8') if re.findall(r'Source : .+',line)]

我要出去了['Source : C:\\RegularExpressionsWithDotNet\\robocopytest\\source\\தமிழ்\\हिन्दी\\English\n', 'Source : C:\\RegularExpressionsWithDotNet\\robocopytest\\source\\தமிழ்\\हिन्दी\\English\n']

处理with条件时有什么错误


Tags: 文本resourceenglishlinemaydeststarted
3条回答

你可以做一些改进。在

  1. 逐行遍历文件,而不是调用f.read()str.splitlines。在

    这就是你在列表理解和使用with

    的主要区别
  2. 通过编译regex然后调用它的re.findall方法来替换re.findall调用。

  3. 使用列表的真实性忽略空结果。在
source = re.compile('\bSource (.+)')

data = []
with open(r'C:\debug.log', 'r') as f:
    for line in f:
        sources = source.findall(line)
        if sources:
            data.extend(sources)

最后,data应该包含您要查找的所有路径。在

你能不能把这张单子扩展一下而不加上?源代码应如下所示:

datalinelist = []
for i in data:
    datalinelist.extend(re.findall(r'\bSource : (.+)', i))
datalinelist
with open(r'debug.log', 'r', encoding='utf-8') as fr:
    eachline = fr.read()
data = [eachline.strip() for eachline in eachline.splitlines()]
datalinelist = []
for i in data:
    datalinelist.extend(re.findall(r'\bSource : (.+)', i))
datalinelist

['C:\RegularExpressionsWithDotNet\robocopytest\source\?????\??????\英语', 'C:\RegularExpressionsWithDotNet\robocopytest\source\?????\??????\英语']

相关问题 更多 >

    热门问题