删除字符串python中的行

2024-06-16 09:30:28 发布

您现在位置: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个字符。有没有更优雅/有效的方法?你知道吗


Tags: 方法字符串inforleniflinecontent
3条回答

下面是一个更简洁的列表:

'\n'.join([i if len(i) > 5 else '' for i in content.split('\n')])
#'first line \nsecond line\nthird line\n'

从你的方法来看。。。请注意,内容已经是迭代器,因此不需要iter(content)。你知道吗

还有什么可以改进的?python没有使用计数器,而是有一个内置函数^{}。使用它,您的代码可能看起来像:

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的回答很好,而且很像Python,但是我们可以走得更远!你知道吗

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公司需要任何iterable,所以这里使用生成器表达式来获得更多pythonicness!你知道吗

另一个选项是Python Regex:

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'

相关问题 更多 >