[英]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()
从结果的两端删除空格。
使用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.