【问题标题】:Empty regex returns and repetitions空正则表达式返回和重复
【发布时间】:2019-12-13 21:30:00
【问题描述】:

我正在尝试从 csv 检索一些内容,将列表对象转换为字符串,然后尝试使用正则表达式将一堆字符串减少为重复部分(最终计算它们。具体来说,我正在尝试在库中收集 call_number 数据并查看搁置统计信息。

在一个更大的过程之前和之后的一切都在发挥作用。你在这里看到的是我一直遇到障碍的部分。

但我一直得到的只是将原始 csv 中的相同内容返回到新 csv 中。 你可以看到我在整个过程中使用 print 语句来查看哪些有效,哪些无效。

但是当我尝试打印正则表达式生成的内容时,我得到“无”。”

我对此有什么不明白的地方? 是否存在操作顺序问题,我如何专门将正则表达式结果作为新 csv 的内容? 'call_interim2.csv'

提前谢谢你。

'''

with open('call_interim.csv', 'r', newline='') as call_intrm:

        print('step 2')

        with open('call_interim2.csv', 'w') as call_intrm2:
            cano_reader = csv.reader(call_intrm)
            for line in cano_reader:
                line = (str(line))#.strip(',')
                row = re.search('^.+\.', line)

                print(row)
                cano_writer2 = csv.writer(call_intrm2)

                for row in call_intrm:
                    cano_writer2.writerow([row])

'''

【问题讨论】:

    标签: regex python-3.x csv


    【解决方案1】:

    我的猜测是 \ 没有被正确转义。研究使用 python raw string notation。例如:

    row = re.search(r'^.+\.', line)
    

    来自regex 文档:

    ...解决方案是对正则表达式模式使用 Python 的原始字符串表示法;在以 'r' 为前缀的字符串文字中,不会以任何特殊方式处理反斜杠。所以 r"\n" 是一个包含 '\' 和 'n' 的两个字符的字符串,而 "\n" 是一个包含换行符的一个字符的字符串。通常模式将使用这种原始字符串表示法在 Python 代码中表示。

    除此之外,我会在您的问题中提供一些示例,以显示您的输入字符串的外观,以便对其进行测试。

    【讨论】:

    • 今天让我看看'r'选项,看看它是怎么回事。谢谢。
    • 结论:我将为此使用与正则表达式不同的方法 - 但在未来,另一个机会可能很快就会出现。谢谢
    猜你喜欢
    • 2018-11-08
    • 2023-04-06
    • 2012-08-22
    • 2018-03-14
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多