首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中使用split()或find()函数

在python中使用split()或find()函数
EN

Stack Overflow用户
提问于 2016-02-22 02:20:50
回答 4查看 676关注 0票数 1

我正在编写一个程序,它打开一个文件并查找如下所示的行:

代码语言:javascript
复制
X-DSPAM-Confidence:    0.8475. 

我想使用拆分和查找函数来提取这些行,并将其放入一个变量中。这是我写的代码:

代码语言:javascript
复制
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,所以请给我一些简单的,我能理解的东西,以帮助我以后。别这样,别这样。

EN

回答 4

Stack Overflow用户

发布于 2016-02-22 02:26:27

您已经非常接近了,您只需要在continue adding该行to a list下面添加一条语句。

代码语言:javascript
复制
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):

代码语言:javascript
复制
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列表进行列表理解,如下所示:

代码语言:javascript
复制
values = [ l.split()[1] for l in good_lines ]
票数 0
EN

Stack Overflow用户

发布于 2016-02-22 02:29:20

我认为唯一错误的部分是if中的not

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2016-02-22 02:34:30

首先使用raw_input()接收输入

代码语言:javascript
复制
fname = raw_input("Enter file name: ")

然后检查输入字符串是否为空:

代码语言:javascript
复制
if not fname:
    fname = 'mbox-short.txt'

然后,打开文件并逐行阅读:

代码语言:javascript
复制
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())

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35540028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档