首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个文件写入另一个python

从一个文件写入另一个python
EN

Stack Overflow用户
提问于 2015-07-05 19:06:36
回答 2查看 127关注 0票数 1

我试图从一个网页中获取一些信息,并将其中一个变量写入文件中,但是我没有运气,这可能很容易,但我迷路了。下面是其中一个行的示例,其中有1253行。

代码语言:javascript
复制
<div class='entry qual-5 used-demoman slot-head bestprice custom' data-price='3280000' data-name="Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">

我在后面的字段叫做数据名,它不是在每一行的同一位置。我试过了,但没有用

代码语言:javascript
复制
mfile=open('itemlist.txt','r')
mfile2=open('output.txt','a')
for row in mfile:
    if char =='data-name':
        mfile2.write(char)

编辑1:

我制作了一个示例文件“你好,嗨,花生”,如果是这样的话:

代码语言:javascript
复制
for row in mfile:
    print row.index('hello')

它会像预期的那样打印0,但是当我将hello改为hi时,它没有返回1,它什么也没有返回。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-05 20:55:16

让我们尝试使用常见的字符串操作方法来查找值:

代码语言:javascript
复制
>>> line = '''<div class='entry qual-5 used-demoman slot-head bestprice custom' data-price='3280000' data-name="Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">'''

我们可以使用str.index查找字符串在字符串中的位置:

代码语言:javascript
复制
>>> line.index('data-name')
87

因此,现在我们知道,我们需要开始查看索引87中我们感兴趣的属性:

代码语言:javascript
复制
>>> line[87:]
'data-name="Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">'

现在,我们还需要删除data-name="部件:

代码语言:javascript
复制
>>> start = line.index('data-name') + len('data-name="')
>>> start
98
>>> line[start:]
'Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">'

现在,我们只需要找到结束引号的索引,然后只提取属性值:

代码语言:javascript
复制
>>> end = line.index('"', start)
>>> end
118
>>> line[start:end]
'Kill-a-Watt Allbrero'

然后我们就有了解决办法:

代码语言:javascript
复制
start = line.index('data-name') + len('data-name="')
end = line.index('"', start)
print(line[start:end])

我们可以把它放在循环中:

代码语言:javascript
复制
with open('itemlist.txt','r') as mfile, open('output.txt','a') as mfile2w
    for line in mfile:
        start = line.index('data-name') + len('data-name="')
        end = line.index('"', start)
        mfile2.write(line[start:end])
        mfile2.write('\n')
票数 3
EN

Stack Overflow用户

发布于 2015-07-05 20:54:11

您也可以使用美汤

a.html

代码语言:javascript
复制
<html>
    <head>
        <title> Asdf </title>
    </head>
    <body>

        <div class='entry qual-5 used-demoman slot-head bestprice custom' data-price='3280000' data-name="Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">

    </body>
</html>

a.py

代码语言:javascript
复制
from bs4 import BeautifulSoup
with open('a.html') as f:
    lines = f.readlines()
soup = BeautifulSoup(''.join(lines), 'html.parser')
result = soup.findAll('div')[0]['data-price']
print result
# prints 3280000

我的观点是,如果您的任务非常容易,就像在您的示例中一样,实际上不需要使用beautifulsoup。但是,如果是更复杂,或它将更加复杂。考虑在beautifulsoup中尝试一下。

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

https://stackoverflow.com/questions/31233974

复制
相关文章

相似问题

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