【问题标题】:Add Brackets Across String Containing Alphanumeric Characters在包含字母数字字符的字符串中添加括号
【发布时间】:2021-09-13 18:48:12
【问题描述】:

我有一些数据,例如:

Installation start:Mon Sep 13 2021, 7:30:26 AM
Installation completed:Mon Sep 13 2021, 8:03:13 AM
Result code OK
00000000000N0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN00NNNNNNNNN00NN0NN00NNNNNNNNNNNNNNN
Result code OK
Device has been successfully installed
Single-device update
Received at:Mon Sep 13 2021, 7:18 AM
Control unit type:secondary_ecus
Control unit identifier:meloncake0.0
Target:meloncake.0
Download start:Mon Sep 13 2021, 7:07:34 AM
Download completed:Mon Sep 13 2021, 7:07:41 AM
Installation start:Mon Sep 13 2021, 7:09:29 AM
Installation completed:Mon Sep 13 2021, 7:18:46 AM
Result code OK
Post flash seq failed | Generate maintainer threads failed | : [9A00NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDDDDAZNNNNNNNNNNNN0NN00NAANN0NNNNNNNNNNNNNN]
Result code OK
Device has been successfully installed
Single-device update
Received at:Mon Sep 13 2021, 6:57 AM
Control unit type:secondary_ecus
Control unit identifier:meloncake.0
Target:meloncake1.0
Download start:Mon Sep 13 2021, 6:37:17 AM
Download completed:Mon Sep 13 2021, 6:37:23 AM
Installation start:Mon Sep 13 2021, 6:37:45 AM
Installation completed:Mon Sep 13 2021, 6:57:32 AM
Result code OK
Post flash seq failed | Generate maintainer threads failed | : [9A00000N000N0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN]
Result code OK
Device has been successfully installed
Single-device update
Received at:Mon Sep 13 2021, 6:26 AM
Control unit type:secondary_ecus
Control unit identifier:meloncake.0
Target:meloncake.0
Download start:Mon Sep 13 2021, 5:52:55 AM
Download completed:Mon Sep 13 2021, 5:53:02 AM
Installation start:Mon Sep 13 2021, 5:54:01 AM
Installation completed:Mon Sep 13 2021, 6:26:48 AM
Result code OK
00000000000N0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN00NNNNNNNNN00NN0NN00NNNNNNNNNNNNNNN
Result code OK
Device has been successfully installed

我想在长度为 128 个字符并出现在 Result code OK 行之后的字符串周围加上括号“[”、“]”

它有 128 个连续字符,后跟一个新行。什么可以是正则表达式来搜索并在其周围放置括号,以便输出为:

Installation start:Mon Sep 13 2021, 7:30:26 AM
Installation completed:Mon Sep 13 2021, 8:03:13 AM
Result code OK
[00000000000N0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN00NNNNNNNNN00NN0NN00NNNNNNNNNNNNNNN]
Result code OK
Device has been successfully installed
Single-device update
Received at:Mon Sep 13 2021, 7:18 AM
Control unit type:secondary_ecus
Control unit identifier:meloncake0.0
Target:meloncake.0
Download start:Mon Sep 13 2021, 7:07:34 AM
Download completed:Mon Sep 13 2021, 7:07:41 AM
Installation start:Mon Sep 13 2021, 7:09:29 AM
Installation completed:Mon Sep 13 2021, 7:18:46 AM
Result code OK
Post flash seq failed | Generate maintainer threads failed | : [9A00NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDDDDAZNNNNNNNNNNNN0NN00NAANN0NNNNNNNNNNNNNN]
Result code OK
Device has been successfully installed
Single-device update
Received at:Mon Sep 13 2021, 6:57 AM
Control unit type:secondary_ecus
Control unit identifier:meloncake.0
Target:meloncake1.0
Download start:Mon Sep 13 2021, 6:37:17 AM
Download completed:Mon Sep 13 2021, 6:37:23 AM
Installation start:Mon Sep 13 2021, 6:37:45 AM
Installation completed:Mon Sep 13 2021, 6:57:32 AM
Result code OK
Post flash seq failed | Generate maintainer threads failed | : [9A00000N000N0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN]
Result code OK
Device has been successfully installed
Single-device update
Received at:Mon Sep 13 2021, 6:26 AM
Control unit type:secondary_ecus
Control unit identifier:meloncake.0
Target:meloncake.0
Download start:Mon Sep 13 2021, 5:52:55 AM
Download completed:Mon Sep 13 2021, 5:53:02 AM
Installation start:Mon Sep 13 2021, 5:54:01 AM
Installation completed:Mon Sep 13 2021, 6:26:48 AM
Result code OK
[00000000000N0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN00NNNNNNNNN00NN0NN00NNNNNNNNNNNNNNN]
Result code OK
Device has been successfully installed

到目前为止的代码:

import re

with open('results.txt') as infile:
    for line in infile:
        m = re.search(r'', line)

我是正则表达式的新手,所以我想知道如何搜索由 128 个连续字符组成的字符串,后跟换行符,并且只更改整个数据集中的这些字符串。

非常感谢任何帮助!

【问题讨论】:

    标签: python python-3.x etl


    【解决方案1】:

    您的搜索需要牢记一些注意事项,例如换行代码\n。除了在上一行中对“结果代码 OK\n”使用条件检查之外,我还能够正确命中此搜索。

    re.search(r'(\S{126})\n',line)
    

    这会搜索任何长度为 126 个字符的非空格字符序列,后跟换行符 \n

    【讨论】:

    • 要注意的是行的长度。你的本身并不是 128 个(如果你复制粘贴其中一个字符串,它会显示 127 个字符)。您可能会得到 128,因为您也在捕获换行符。我上面的搜索修改为 127 而不是大括号中的 126 可能仍然有效。
    • 谢谢!如何将括号添加到开头和结尾?
    • 我通过使用 enumerate(line) 遍历行来做到这一点。如果正则表达式记录了命中,我将使用 enumerate 中的索引修改该行。
    • 您也可以提供该代码吗?我尝试使用 list.insert('[') 但它没有给我正确的输出:(
    • 这个正则表达式并不完全正确,因为它还会选择带括号的字符串并从中取出最后 127 个字符,直到 ]\n
    猜你喜欢
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2022-06-23
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2014-11-06
    相关资源
    最近更新 更多