我目前正在编写一个运行文档的脚本,提取所有关键字,然后尝试将这些关键字与其他文档中的关键字进行匹配.有一些细节使这个问题复杂化,但它们与我的问题不太相关.基本上我希望能够匹配单词而不管它们出现的时态.
例如:如果给出字符串"游泳","游泳"和"游泳",我想要一个程序,可以识别这些都是相同的单词,但它是否会存储游泳,游泳或游泳等单词对我而言非常重要.
我知道这个问题可以通过包含所有这些单词形式的字典来解决,但我不知道任何以这种方式映射的字典对此有用.我更喜欢与Python兼容的解决方案或库,因为这是我目前用于此脚本的内容,但我可以使用几乎任何语言的解决方案(除了haskell或eiffel或类似的模糊/难以与...合作)
我在将常规文件读入我已编写的程序时遇到一些麻烦.我目前遇到的问题是pdf基于某种突变的utf-8,其中包括一个BOM,它会在我的整个操作中引发一个问题.在我的应用程序中,我正在使用需要ascii输入的Snowball词干算法.有许多主题涉及到为utf-8解决错误,但是没有一个涉及将它们发送到Snowball算法,或者考虑ascii是我想要的最终结果.目前我使用的文件是使用标准ANSI编码的记事本文件.我得到的具体错误信息是这样的:
File "C:\Users\svictoroff\Desktop\Alleyoop\Python_Scripts\Keywords.py", line 38, in Map_Sentence_To_Keywords
Word = Word.encode('ascii', 'ignore')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x96 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我的理解是在python中,包括ignore参数只会传递遇到的任何非ascii字符,这样我就会绕过任何BOM或特殊字符,但显然不是这种情况.调用的实际代码在这里:
def Map_Sentence_To_Keywords(Sentence, Keywords):
'''Takes in a sentence and a list of Keywords, returns a tuple where the
first element is the sentence, and the second element is a set of
all keywords appearing in the sentence. Uses Snowball algorithm'''
Equivalence = stem.SnowballStemmer('english')
Found = []
Sentence = re.sub(r'^(\W*?)(.*)(\n?)$', r'\2', Sentence)
Words = Sentence.split()
for …Run Code Online (Sandbox Code Playgroud) 我不知道这是一个简单的问题还是不可能的问题,但我找不到任何关于它的东西,所以我想我会问它。
当循环仍在运行时,是否可以从 while 循环返回值?基本上我想要做的是让一个向量在一个 while 循环中不断更新,但能够在不停止 while 循环的情况下在被询问时返回值。这可能吗?我是否只需要分解程序并将 while 循环放在一个单独的线程中,还是可以在一个函数中完成?
此外,我更喜欢一种计算量不高(显然)的方法,并且与速率限制的 while 循环兼容,因为这个方法肯定会受到速率限制。
同样,如果这是一个愚蠢的问题,请告诉我,我会删除它,但我无法找到有关此问题的文档。
我正在尝试使用以下代码来实现这一点:
def update(self, x_motion, y_motion, z_motion):
self.x_pos += self.x_veloc
self.y_pos += self.y_veloc
self.z_pos += self.z_veloc
self.x_veloc += self.x_accel
self.y_veloc += self.y_accel
self.z_veloc += self.z_accel
self.x_accel = x_motion[2]
self.y_accel = y_motion[2]
self.z_accel = z_motion[2]
while True:
self.update(x_motion, y_motion, z_motion)
print vector.x_accel
Run Code Online (Sandbox Code Playgroud)
至少在这些方面。重要的是这些在 while 循环之外返回,以便 while 循环在后台运行,但它只在被询问时才给出结果,或者类似的东西。
我有一个非常基本的蜘蛛,遵循入门指南中的说明,但由于某种原因,尝试将我的项目导入我的蜘蛛会返回错误.蜘蛛和物品代码如下所示:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from myProject.items import item
class MyProject(BaseSpider):
name = "spider"
allowed_domains = ["website.com"]
start_urls = [
"website.com/start"
]
def parse(self, response):
print response.body
from scrapy.item import Item, Field
class ProjectItem(Item):
title = Field()
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时scrapy要么找不到我的蜘蛛,要么无法导入我的items文件.这里发生了什么?这应该是一个正确运行的例子吗?
我一直在学习基本的python,但我是NLTK的新手.我想使用nltk为给定的单词列表提取下位词.当我手动输入每个术语时,它工作正常,但当我尝试迭代列表项时它似乎不起作用.
这有效:
from nltk.corpus import wordnet as wn
syn_sets = wn.synsets("car")
for syn_set in syn_sets:
print(syn_set, syn_set.lemma_names())
print(syn_set.hyponyms())
Run Code Online (Sandbox Code Playgroud)
但是我如何使用Wordnet方法处理像这样的项目列表
token = ["cat", "dog", "car"]
syn_sets = wn.synsets((*get each item from the list*))
Run Code Online (Sandbox Code Playgroud)
在一个循环?
谢谢!
在java中如果你有一个对象需要一个泛型来扩展一个特定的类,但你想用它的扩展来实现它有没有办法让java知道你实际上并没有违反自己的规则?下面的示例代码假设没有意义.
public interface WantedInterface extends StaticInterface<WantedObject>
public class WantedObject extends OlderObject
public class OlderObject extends UsefulObject
public interface StaticInterface<T extends UsefulObject>
Run Code Online (Sandbox Code Playgroud)
所以我的问题基本上是,有没有办法让我告诉我的StaticInterface我的WantedObject实际上扩展了我的UsefulObject,即使它不是直接的?我真的不希望不必将我的WantedObject重写为UsefulObject的纯扩展,因为OlderObject包含许多有用的代码,我正在写一个数据库,我正在使用的序列需要了解当前状态OlderObject.我在写这篇文章时意识到我可以让WantedInterface直接扩展OlderObject的接口,但我想知道是否有办法避免这种情况.
编辑:好的,在一个非常奇怪的事情扭曲,我能够通过将WantedObject的扩展名更改为UsefulObject来解决问题,然后将其更改为原样.也许问题只是一些临时的IDE事情?我正在使用eclipse,它有偶然的问题吗?
可能是个愚蠢的问题,但是在python中有一种简单的方法可以自动用零填充数字到固定长度吗?我无法在python文档中找到这个,但我可能看起来不够努力?ei我希望bin(4)返回00100而不是100.是否有一种简单的方法可以确保输出为6位而不是3位?
我对casperjs和javascript很新,但我在其他领域有相当丰富的编码经验.目前我正在尝试运行的代码只是访问一个网站并点击一个链接,这应该是直截了当的,但我遇到了麻烦.
var casper = require('casper').create();
var x = require('casper').selectXPath;
casper.start('http://www.guru.com/emp/search.aspx?keyword=#&&page=1&sort=Earnings');
casper.then(function() {
this.test.assertExists({
type: 'xpath',
path: '//*[@class="paddingLeft5 txt11px txt666"]/a[text()="Next"]'
}, "Got Here");
});
casper.then(function() {
var firstUrl = this.getCurrentUrl()
});
casper.thenClick(x('//*[@class="paddingLeft5 txt11px txt666"]/a[text()="Next"]'), function() {
console.log("Woop!");
});
casper.waitFor(function check() {
return this.evaluate(function() {
return this.getCurrentUrl() != firstUrl;
});
}, function then() {
console.log(this.getCurrentUrl());
});
casper.run();
Run Code Online (Sandbox Code Playgroud)
目前这个时间超过5000毫秒而没有包装在waitFor中它只是打印两次相同的URL.
我想查看程序在Spyder中运行时的进度.可能吗?截至目前,除非我在底部写一个指示程序完成执行的打印语句,否则我似乎不知道它什么时候结束
我正在尝试编写一个函数,它接受一个字符串并正常打印,然后反过来,如下所示:
string = "hello"
mirror(string)
'helloolleh'
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的代码:
def mirror(x) :
sentence = " "
length = len(x)
lengthstring = str(len(x))
lengthint = int(lengthstring)
sentence = x[lengthint, 0]
print x + sentence
Run Code Online (Sandbox Code Playgroud)
但它一直说len(x)是一个元组而不是一个int,它不能成为字符串切片的一部分?
python ×8
nltk ×2
web-scraping ×2
binary ×1
casperjs ×1
encoding ×1
generics ×1
java ×1
javascript ×1
module ×1
nlp ×1
python-3.x ×1
real-time ×1
regex ×1
scrapy ×1
spyder ×1
while-loop ×1
wordnet ×1