![](/img/trans.png)
[英]How to remove some leading characters of a string which is an element of a list in 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.