获取所有不以字符开头的字符串的最简单方法是什么?

42 投票
4 回答
139963 浏览
提问于 2025-04-16 21:55

我正在尝试从一个文本文件中解析大约2000万行内容,并且想要对那些不以问号开头的行进行进一步处理。我希望找到一种不使用正则表达式的方法来实现这个目标。我想做的事情大概是这样的:

for line in x:
    header = line.startswith('?')
if line.startswith() != header:
        DO SOME STUFF HERE

我知道startswith这个方法只接受一个参数,但有没有简单的方法可以获取所有不以问号开头的行呢?

4 个回答

2

你可能想要的就是这样的:

with open('myfile.txt') as fh:
  for line in fh:
    if line[0] != '?': # strings can be accessed like lists - they're immutable sequences.
      continue
    # All of the processing here when lines don't start with question marks.
10

这里有一个很简洁的代码,一看就像自然语言一样。

字符串的定义:

StringList = [ '__one', '__two', 'three', 'four' ]

执行这个操作的代码:

BetterStringList = [ p for p in StringList if not(p.startswith('__'))]
74

使用生成器表达式,我觉得这是最好的方法。

for line in (line for line in x if not line.startswith('?')):
    DO_STUFF

或者你可以用你的方法:

for line in x:
    if line.startswith("?"):
        continue
    DO_STUFF

或者:

for line in x:
    if not line.startswith("?"):
        DO_STUFF

这其实完全取决于你的编程风格。我个人更喜欢第一种,但也许第二种看起来更简单。不过我不太喜欢第三种,因为缩进太多了。

撰写回答