获取所有不以字符开头的字符串的最简单方法是什么?
我正在尝试从一个文本文件中解析大约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
这其实完全取决于你的编程风格。我个人更喜欢第一种,但也许第二种看起来更简单。不过我不太喜欢第三种,因为缩进太多了。