非常新,请保持良好并慢慢清楚地解释。谢谢:))
我试过在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'对象不支持项目分配
这似乎意味着它不喜欢我的“=数据”,但我不知道如何告诉它我想采用以#开头的行并单独保存。
答案 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