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

42

我正在尝试解析来自文本文件的大约2000万行,并寻找一种方法对不以问号开头的行进行进一步的操作,我希望找到一种不使用正则表达式的解决方案。我想要做的是这样的:

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

我知道startswith方法只接受一个参数,但是否有简单的解决方案可以获取所有不以问号开头的行?

4个回答

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

这取决于你的编程风格。我更喜欢第一个,但第二个似乎更简单。但是第三个我不太喜欢,因为它需要很多缩进。


10

这里有一个非常接近自然语言的好的一行代码。

字符串的定义:

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

执行此操作的代码:

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

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.

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接