我正在编写遍历文本文件的代码,计算每行中有多少单词,并且无法将结果(每行包含一个数字的多行)放入新的文本文件中.
我的代码:
in_file = open("our_input.txt")
out_file = open("output.txt", "w")
for line in in_file:
line = (str(line)).split()
x = (len(line))
x = str(x)
out_file.write(x)
in_file.close()
out_file.close()
Run Code Online (Sandbox Code Playgroud)
但是我得到的文件将所有数字放在一行中.
如何在我正在制作的文件中分隔它们?
所以我创建了一个功能,通过一个包含汽车制造商,城市mpg和高速公路mpg的元组列表.
def maker(mileage_list):
maker_list = []
for line in mileage_list:
if line[2] not in maker_list:
maker_tuple = (line[2],int(line[0]),int(line[1]))
maker_list.append(maker_tuple)
return maker_list
Run Code Online (Sandbox Code Playgroud)
如果
mileage_list = [('DODGE', 13, 18), ('DODGE', 16, 22),
('DODGE', 16, 22), ('DODGE', 16, 21),
('FORD', 16, 24), ('FORD', 20, 26),
('FORD', 22, 28), ('FORD', 18, 24),
('FORD', 34, 30), ('FORD', 12, 18)]
Run Code Online (Sandbox Code Playgroud)
它应该只打印maker_list =[('DODGE',13,18),('FORD',16,24)]但仍然打印出原始输入.
我有一个文件夹ROOT和许多不同的文件夹(让我们假设N),为了简单起见,我称之为F1,F2等...
我需要使用这些文件夹中的文件.如果我只有一个文件夹,我知道我可以做:
os.chdir(".") #I'm workingo in ROOT
for filename in glob.glob("*.txt"):
#I can work with the i-th file...
Run Code Online (Sandbox Code Playgroud)
但我需要做的是像这样(伪代码):
os.chdir(".") #I'm working in ROOT
for F-i-th in ROOT: #for each folder in the ROOT main folder
for filename in F-i-th("*.txt"): #I select only the file with this extention
#process data inside i-th file
Run Code Online (Sandbox Code Playgroud)
我的意思是我需要进入第一个文件夹(F1)并处理所有文件(或者如果它可能是所有的.txt文件),之后我应该进入F2并处理所有文件....
我有以下代码片段,我一直在努力使其工作。我到处寻找解决方案,但我发现的所有解决方案似乎都不起作用。
我的xml.Unmarshal命令映射似乎有问题,因为它与嵌套字段有关。下面的代码用于检索名为 的第一个值,它位于unitxml 代码的顶层。
其他两个字段为零,它们嵌套了两级深。这意味着结构设置不正确。这是代码。
package main
import (
"encoding/xml"
"fmt"
)
type datevalue struct {
Date int `xml:"date"`
Value float32 `xml:"value"`
}
type pv struct {
XMLName xml.Name `xml:"series"`
Unit string `xml:"unit"`
datevalues datevalue `xml:"values>dateValue"`
}
func main() {
contents := `<series>
<timeUnit>DAY</timeUnit>
<unit>Wh</unit><measuredBy>INVERTER</measuredBy>
<values><dateValue>
<date>2015-11-04 00:00:00</date>
<value>5935.405</value>
</dateValue></values>
</series>`
m := &pv{}
xml.Unmarshal([]byte(contents), &m)
fmt.Printf("%s %f %d\n", m.Unit, m.datevalues.Value, m.datevalues.Date)
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
Wh 0.000000 0
Run Code Online (Sandbox Code Playgroud) 我正在学习网络抓取,我一直在努力编写一个程序,从Steam的网站上提取信息作为练习.
我想编写一个程序,只访问每个前10名畅销游戏的页面并提取一些内容,但我的程序只是在尝试访问M级游戏时被重定向到年龄检查页面.
我的程序看起来像这样:
front_page = urlopen('http://store.steampowered.com/').read()
bs = BeautifulSoup(front_page, 'html.parser')
top_sellers = bs.select('#tab_topsellers_content a.tab_item_overlay')
for item in top_sellers:
game_page = urlopen(item.get('href'))
bs = BeautifulSoup(game_page.read(), 'html.parser')
#Now I'm on the age check page :(
Run Code Online (Sandbox Code Playgroud)
我不知道如何通过年龄检查,我已经尝试通过发送POST请求来填写年龄检查,如下所示:
post_params = urlencode({'ageDay': '1', 'ageMonth': 'January', 'ageYear': '1988', 'snr': '1_agecheck_agecheck__age-gate'}).encode('utf-8')
page = urlopen(agecheckurl, post_params)
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我仍然在年龄检查页面.任何可以帮助我的人,我怎么能超越它?
使用Python 2.7.6与ElementTree一起从文件系统加载/解析HTML文件,然后遍历文件以将特定的RegEx存储到数据结构中.
所以,在我项目的文件夹中,我有一个名为person.html的HTML文件:
<!DOCTYPE html>
<html>
<body>
<ul>
<li>Name: $name</li>
<li>Age: $age</li>
</ul>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的Python脚本(main.py):
#!/usr/bin/env python
import web
import xml.etree.ElementTree as ElementTree
tree = ET.parse(person.html)
Run Code Online (Sandbox Code Playgroud)
问题:
如何使用以$(例如$name和$age)开头的RegEx或ElementTree值进行解析?
如何将这些值存储到我将来可以迭代的数据结构中?
当我在一个程序上工作时,我在代码中看到了一个奇怪的行为.这就是我所看到的.
>>> l = [1,2,3,4,5,6,7,8]
>>> g = []
>>> for i in l:
... g.append(l.pop())
...
>>> l
[1, 2, 3, 4]
>>> g
[8, 7, 6, 5]
>>>
Run Code Online (Sandbox Code Playgroud)
该列表g应该具有列表中的所有元素l!但为什么只考虑一半的名单呢?
免责声明:我不是要复制列表或反转列表.这是我在处理其他事情时发现的.
这有点奇怪,但我正在运行一个名为scrapebox的程序,scrapebox有一个automator插件,可以创建一个文件来自动运行一些内容.为了从cmd运行automator,我将cd进入程序目录,然后键入:
Scrapebox.exe "automator:1.sbaf"
Run Code Online (Sandbox Code Playgroud)
它首先会启动Scrapebox程序,一旦打开,就会立即运行自动化文件.
这是一个更大拼图中的一小部分.我试图在更大的Python脚本中调用它.
import os
import subprocess
..........
..........
..........
print "Opening Scrapebox now, please wait."
os.chdir('C:\Users\Admin\DomainDB\Programs\ScrapeBox')
print
print "Current working dir : %s" % os.getcwd()
print
subprocess.call(["Scrapebox.exe"])
#"automator:1.sbaf"
print "Scrapebox finished. Moving on."
Run Code Online (Sandbox Code Playgroud)
当我像上面那样运行它时,它可以工作并打开scrapebox.但是,我真正需要做的是这样的事情:
subprocess.call(["Scrapebox.exe "automator:1.sbaf""])
Run Code Online (Sandbox Code Playgroud)
当我这样做时,它会抛出语法错误.那么我如何输入可能作为原始字符串,就好像它被输入cmd一样?
我试图弄清楚如何在文本文件中搜索字符串,如果找到该字符串,则输出下一行.
我在这里看了一些类似的问题,但无法从他们那里得到任何帮助我的东西.
这是我制作的节目.我已经完全解决了这个具体的问题,所以它在很多其他方面也可能并不完美.
def searcher():
print("Please enter the term you would like the definition for")
find = input()
with open ('glossaryterms.txt', 'r') as file:
for line in file:
if find in line:
print(line)
Run Code Online (Sandbox Code Playgroud)
因此,文本文件将由术语组成,然后由其下面的定义组成.
例如:
Python
我正在使用的一种编程语言
如果用户搜索该术语Python,程序应输出定义.
我尝试了不同的打印组合(行+ 1)等但到目前为止没有运气.
我正在尝试使用Selenium查找(并单击)我的Python程序的特定页面。
我试过了
driver.findElement(By.cssSelector("a[href*='text']")).click();
Run Code Online (Sandbox Code Playgroud)
和
driver.findElement(By.partialLinkText("text")).click();
Run Code Online (Sandbox Code Playgroud)
随着text我正在寻找。这些不适用于错误
AttributeError: 'WebDriver' object has no attribute 'findElement'
Run Code Online (Sandbox Code Playgroud)
我只能假设它找不到元素,因为那是Java而不是Python。
网站上链接的唯一区别因素是href属性。
所有其他标签都有重复。我无法100%猜出正确的链接,因此我还需要定位器使用部分文字。
反正有开始吗?我可以使用其他程序吗?有人成功做到了吗?我尝试搜索,但没人问过。
python ×9
python-3.x ×3
directory ×1
elementtree ×1
file ×1
go ×1
html ×1
list ×1
nested ×1
python-2.7 ×1
python-3.5 ×1
regex ×1
selenium ×1
split ×1
subprocess ×1
web-scraping ×1
xml ×1