繁体   English   中英

删除主角Python

[英]Remove leading characters Python

我想从此文件的每一行中删除前导字符,直到找到数字:

文件看起来像这样:

* Fail 63779 - Error A
* Fail 64969 - Error B
* Fail 61529 - Error C
* Fail 65068 - Error D

我的输出应如下所示:

63779 - Error A
64969 - Error B
61529 - Error C
65068 - Error D

如果我以Fail number的升序获得此输出,那就更好了:

61529 - Error C
63779 - Error A
64969 - Error B
65068 - Error D

正则表达式\\d.*从字符串的第一位开始匹配,直到最后一个非换行符为止。 这意味着您可以使用

with open("myfile.txt") as f:
    lines = sorted(re.findall("\d.*", f.read()))

以获得按字典顺序排序的行的列表(而不是数字),因此请注意,如果位数变化。

然后,您可以像这样将其写回到新文件中:

with open("output.txt", "w") as f:
    f.writelines(lines)

如果需要数字排序,可以定义一个辅助函数

def lint(s):
    return int(re.match(r"\d+", s).group())

并像这样使用它:

lines = sorted(re.findall("\d.*", f.read()), key=lint)

例:

>>> s = """* Fail 63779 - Error A
... * Fail 64969 - Error B
... * Fail 61529 - Error C
... * Fail 7068 - Error D"""
>>> sorted(re.findall("\d.*", s), key=lint)
['7068 - Error D', '61529 - Error C', '63779 - Error A', '64969 - Error B']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM