我在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)
有人可以指导我完成这件事吗?
答案 0 :(得分:1)
line = re.sub(r"^\d{2}\.", "", line).strip()
^
仅匹配该行的开头,然后\d{2}
选择两个数字\.
字面点。 sub
将上述正则表达式选择的所有内容替换为空字符串(第二个参数)。 strip()
然后从结果的两端删除空格。
答案 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'