我正在编写一个程序,它打开一个文件并查找如下所示的行:
X-DSPAM-Confidence: 0.8475. 我想使用拆分和查找函数来提取这些行,并将其放入一个变量中。这是我写的代码:
fname = raw_input("Enter file name: ")
if len(fname) == 0:
fname = 'mbox-short.txt'
fh = open(fname,'r')
total = 0
for line in fh:
if not line.startswith("X-DSPAM-Confidence:"): continue请,请我现在开始使用python,所以请给我一些简单的,我能理解的东西,以帮助我以后。别这样,别这样。
发布于 2016-02-22 02:26:27
您已经非常接近了,您只需要在continue adding该行to a list下面添加一条语句。
fname = raw_input("Enter file name: ")
if len(fname) == 0:
fname = 'mbox-short.txt'
fh = open(fname,'r')
total = 0
lines = []
for line in fh:
if not line.startswith("X-DSPAM-Confidence:"):
continue
lines.append(line) # will only execute if the continue is not executed
fh.close()您还应该查看用于打开文件的with关键字-它更安全、更容易。你可以这样使用它(我还交换了你的if的逻辑-节省了一行和一个不必要的continue):
fname = raw_input("Enter file name: ")
if len(fname) == 0:
fname = 'mbox-short.txt'
total = 0
good_lines = []
with open(fname,'r') as fh:
for line in fh:
if line.startswith("X-DSPAM-Confidence:"):
good_lines.append(line)如果您只需要这些值,您可以对good_lines列表进行列表理解,如下所示:
values = [ l.split()[1] for l in good_lines ]发布于 2016-02-22 02:29:20
我认为唯一错误的部分是if中的not:
fname = raw_input("Enter file name: ")
if len(fname) == 0:
fname = 'mbox-short.txt'
fh = open(fname,'r')
total = 0
lines = []
for line in fh:
if line.startswith("X-DSPAM-Confidence:"):
lines.append(line)发布于 2016-02-22 02:34:30
首先使用raw_input()接收输入
fname = raw_input("Enter file name: ")然后检查输入字符串是否为空:
if not fname:
fname = 'mbox-short.txt'然后,打开文件并逐行阅读:
lines = []
with open(fname, 'r') as f:
for line in f.readlines():
if line.startswith("X-DSPAM-Confidence:"):
lines.append(line)with open() as file语句只是确保文件对象在您不再需要它时被关闭。(退出with子句时会自动调用file.close())
https://stackoverflow.com/questions/35540028
复制相似问题