删除字符串中的行 python
Delete line in string python
从 python 中的字符串中删除一行的最有效方法是什么?我试过了
content = "first line \nsecond line\nthird line\netc.".splitlines()
i = 0
for line in iter(content):
if len(line) < 5:
content[i] = ""
i += 1
content = '\n'.join(content)
这里我的删除条件就是一行长度小于5个字符。还有更多的elegant/efficient方法吗?
这是一个使用列表理解的更简洁的方法:
'\n'.join([i if len(i) > 5 else '' for i in content.split('\n')])
#'first line \nsecond line\nthird line\n'
现在使用您的方法...请注意,content 已经是一个迭代器,因此不需要 iter(content)
。
还有什么可以改进的? python 有一个内置函数 enumerate
,而不是使用计数器。使用它,您的代码可能如下所示:
content = "first line \nsecond line\nthird line\netc."
content = content.splitlines()
for i, line in enumerate(content):
if len(line) < 5:
content[i] = ""
separator = '\n'
content = separator.join(content)
yatu 的回答很好,很 pythonic,但我们可以更进一步!
content = "first line \nsecond line\nthird line\netc."
content = '\n'.join(
i if len(i) > 5 else ''
for i in content.splitlines()
)
content
#'first line \nsecond line\nthird line'
str.join 接受任何可迭代对象,所以这里使用生成器表达式以获得更多 pythonic!
另一个选项是 Python 正则表达式:
import re
content = "first line \nsecond line\nthird line\netc."
print(re.sub(r'^.{1,5}$', '', content, flags=re.MULTILINE))
结果:
'first line \nsecond line\nthird line\n'
从 python 中的字符串中删除一行的最有效方法是什么?我试过了
content = "first line \nsecond line\nthird line\netc.".splitlines()
i = 0
for line in iter(content):
if len(line) < 5:
content[i] = ""
i += 1
content = '\n'.join(content)
这里我的删除条件就是一行长度小于5个字符。还有更多的elegant/efficient方法吗?
这是一个使用列表理解的更简洁的方法:
'\n'.join([i if len(i) > 5 else '' for i in content.split('\n')])
#'first line \nsecond line\nthird line\n'
现在使用您的方法...请注意,content 已经是一个迭代器,因此不需要 iter(content)
。
还有什么可以改进的? python 有一个内置函数 enumerate
,而不是使用计数器。使用它,您的代码可能如下所示:
content = "first line \nsecond line\nthird line\netc."
content = content.splitlines()
for i, line in enumerate(content):
if len(line) < 5:
content[i] = ""
separator = '\n'
content = separator.join(content)
yatu 的回答很好,很 pythonic,但我们可以更进一步!
content = "first line \nsecond line\nthird line\netc."
content = '\n'.join(
i if len(i) > 5 else ''
for i in content.splitlines()
)
content
#'first line \nsecond line\nthird line'
str.join 接受任何可迭代对象,所以这里使用生成器表达式以获得更多 pythonic!
另一个选项是 Python 正则表达式:
import re
content = "first line \nsecond line\nthird line\netc."
print(re.sub(r'^.{1,5}$', '', content, flags=re.MULTILINE))
结果:
'first line \nsecond line\nthird line\n'