Python:从文件中提取单行

时间:2017-04-03 05:43:23

标签: python startswith

非常新,请保持良好并慢慢清楚地解释。谢谢:))

我试过在python中搜索如何提取单行,但所有的响应看起来都比我想要的要复杂得多(而且令人困惑)。我有一个文件,它有很多行,我想拉出以#开头的行。

我的file.txt:

"##STUFF"                                                                                                       
"##STUFF"                                                                                                       
#DATA 01 02 03 04 05
More lines here
More lines here
More lines here

我尝试编写脚本:

file = open("file.txt", "r")

splitdata = []

for line in file:
    if line.startswith['#'] = data
    splitdata = data.split()
    print splitdata

#expected output:
#splitdata = [#DATA, 1, 2, 3, 4, 5]

我得到的错误:

line.startswith ['#'] = data

TypeError:'builtin_function_or_method'对象不支持项目分配

这似乎意味着它不喜欢我的“=数据”,但我不知道如何告诉它我想采用以#开头的行并单独保存。

3 个答案:

答案 0 :(得分:3)

更正if语句和缩进

for line in file:
    if line.startswith('#'):
        print line

答案 1 :(得分:0)

这是一个if条件,它期望谓词语句不是赋值。

if line.startswith('#'):
  

startswith(...)       S.startswith(前缀[,start [,end]]) - >布尔

Return True if S starts with the specified prefix, False otherwise.
With optional start, test S beginning at that position.
With optional end, stop comparing S at that position.
prefix can also be a tuple of strings to try.

答案 2 :(得分:0)

虽然你比较新,但你应该开始学习使用 list comprehension ,这里有一个关于如何在你的情况下使用它的例子。我在评论中解释了细节,评论与相应的订单相匹配。

splitdata = [line.split() for line in file if line.startswith('#')]
# defines splitdata as a list because comprehension is wrapped in []
                          # make a for loop to iterate through file
                                           #checks if the line "startswith" a '#'
                                           # note: you should call functions/methods using the () not []
             # split the line at spaces if the if startment returns True