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

时间:2014-10-11 16:52:28

标签: python

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

12.This a line

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

我想从第1行剥离12.1。另外,我想删除换行符。但是在第3行中,.之后还有一个空格我需要删除它。

到目前为止,这是我尝试过的: 导入重新

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

有人可以指导我完成这件事吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

使用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'