繁体   English   中英

如何在Python中去除前两个数字和一个句点?

[英]How to strip the first two numbers and a period in Python?

我是python中的新手。 我一直在尝试从包含此数据的文件中删除前两个字符和一个句点:

12.This a line

13. This is a line too
14. 12 and 13 please stop fighting

我想从第1行中删除12.1 。此外,我想删除换行符。 但是在第3行中. 我也要删除它。

到目前为止,这是我尝试过的方法:import re

with open('linex.txt', 'r+') as lines:
    for line in lines:
        line = line[2:]
        lines.write(line)

有人可以指导我把事情做好吗?

line = re.sub(r"^\d{2}\.", "", line).strip()

^只匹配行的开头,然后\\d{2}选择两个数字\\. 文字点。 然后, sub用空字符串(第二个参数)替换由上述正则表达式选择的所有内容。 然后, strip()从结果的两端删除空格。

参考: https : //docs.python.org/3/library/re.html#re.sub

使用str.partition()获取第一个点之后的所有内容,然后使用str.strip()删除所有前导和尾随空格:

line = line.partition('.')[-1].strip()

演示:

>>> sample = '''\
... 12.This a line
... 13. This is a line too
... 14. 12 and 13 please stop fighting
... '''
>>> for line in sample.splitlines(True):
...     print repr(line.partition('.')[-1].strip())
... 
'This a line'
'This is a line too'
'12 and 13 please stop fighting'

如果没有,使用str.partition()会导致一个空字符串 . 在行中。 另一种方法是将str.split()与分隔符和限制一起使用:

line = line.split('.', 1)[-1].strip()

如果根本没有句点,将导致原始行(但被剥离)。

显示差异的快速演示:

>>> 'foo bar baz'.partition('bar')
('foo ', 'bar', ' baz')
>>> 'foo bar baz'.partition('bar')[-1]
' baz'
>>> 'foo baz'.partition('bar')
('foo baz', '', '')
>>> 'foo baz'.partition('bar')[-1]
''
>>> 'foo bar baz'.split('bar', 1)
['foo ', ' baz']
>>> 'foo bar baz'.split('bar', 1)[-1]
' baz'
>>> 'foo baz'.split('bar', 1)
['foo baz']
>>> 'foo baz'.split('bar', 1)[-1]
'foo baz'

暂无
暂无

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

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