小编sto*_*vfl的帖子

通过'ElementTree'在Python中解析带有命名空间的XML

我有以下XML,我想用Python解析ElementTree:

<rdf:RDF xml:base="http://dbpedia.org/ontology/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns="http://dbpedia.org/ontology/">

    <owl:Class rdf:about="http://dbpedia.org/ontology/BasketballLeague">
        <rdfs:label xml:lang="en">basketball league</rdfs:label>
        <rdfs:comment xml:lang="en">
          a group of sports teams that compete against each other
          in Basketball
        </rdfs:comment>
    </owl:Class>

</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)

我想找到所有owl:Class标签,然后提取其中所有rdfs:label实例的值.我使用以下代码:

tree = ET.parse("filename")
root = tree.getroot()
root.findall('owl:Class')
Run Code Online (Sandbox Code Playgroud)

由于命名空间,我收到以下错误.

SyntaxError: prefix 'owl' not found in prefix map
Run Code Online (Sandbox Code Playgroud)

我尝试在http://effbot.org/zone/element-namespaces.htm上阅读该文档,但由于上述XML具有多个嵌套命名空间,因此我仍然无法正常工作.

请告诉我如何更改代码以查找所有owl:Class标签.

python xml elementtree xml-namespaces xml-parsing

148
推荐指数
5
解决办法
12万
查看次数

将滚动条添加到Tkinter中的一组小部件

我使用Python来解析日志文件中的条目,并使用Tkinter显示条目内容,到目前为止它非常好.输出是标签小部件的网格,但有时会有比屏幕上显示的行多的行.我想添加一个滚动条,看起来应该很容易,但我无法弄明白.

该文档暗示只有List,Textbox,Canvas和Entry小部件支持滚动条界面.这些似乎都不适合显示小部件网格.可以在Canvas小部件中放置任意小部件,但您似乎必须使用绝对坐标,因此我无法使用网格布局管理器?

我已经尝试将小部件网格放入框架,但这似乎不支持滚动条界面,所以这不起作用:

mainframe = Frame(root, yscrollcommand=scrollbar.set)
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议绕过这个限制吗?我不想在PyQt中重写并增加我的可执行图像大小,只需要添加一个滚动条!

python tkinter tkinter.scrollbar

57
推荐指数
3
解决办法
5万
查看次数

设置窗口图标

当我尝试使用下面的代码将丑陋的红色"TK"左上角的窗口图标更改为我自己的图标时,Python发出错误:

from tkinter import *
root = Tk()

#some buttons, widgets, a lot of stuff

root.iconbitmap('favicon.ico')
Run Code Online (Sandbox Code Playgroud)

这应该将图标设置为'favicon.ico'(根据网络上的很多论坛帖子).但不幸的是,所有这一行都抛出以下错误:

Traceback (most recent call last):
  File "d:\ladvclient\mainapp.py", line 85, in <module>
    root.iconbitmap(bitmap='favicon.ico')
  File "C:\Python33\lib\tkinter\__init__.py", line 1637, in wm_iconbitmap
    return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "favicon.ico" not defined
Run Code Online (Sandbox Code Playgroud)

我已经做了什么:

  • 我检查了路径 - 一切都是100%正确
  • 我尝试了其他文件格式,如- .png.bmp没有工作
  • 我在许多网站上看到了这个问题

而对于第三点,我最喜欢的关于Tkinter的网站effbot.org告诉我,Windows忽略了这个iconbitmap功能.但这并不能解释为什么会抛出错误!

有一些"hackish"方法可以避免这个问题,但没有一个是为Python 3.x编写的.

所以我的最后一个问题是:有没有办法使用Python 3.x和Tkinter获取自定义图标?

另外,不要告诉我应该使用另一个GUI库.我希望我的程序能够在每个平台上运行.我也想要一个编码版本,而不是一个py2exesth解决方案.

python tkinter windows-7 python-3.x tkinter.iconbitmap

46
推荐指数
3
解决办法
11万
查看次数

在Python项目中设置GOOGLE_APPLICATION_CREDENTIALS以使用Google API

我是一名编程初学者,并且学习如何在Python中使用google API.

我有:

  1. 在Google Cloud上创建了一个项目,并启用了我想要使用的API,即Natural Language API.
  2. 创建了一个凭证并下载了凭证JSON文件,将其保存为apikey.JSON
  3. 在终端我运行了这个命令:export GOOGLE_APPLICATION_CREDENTIALS = apikey.JSON,没有弹出错误.

但是,即使我为此运行了最简单的代码,我也有错误,表示找不到凭证varialbe.

我不知道现在该怎么办.请帮忙.

这是我的代码:

from google.cloud import language

def sentiment_text(text):

    client = language.LanguageServiceClient()

    sentiment = client.analyze_sentiment(text).document_sentiment

    print('Score: {}'.format(sentiment.score))
    print('Magnitude: {}'.format(sentiment.magnitude))

sampletxt='Python is great'

sentiment_text(sampletxt)
Run Code Online (Sandbox Code Playgroud)

我有错误:

回溯(最近一次调用最后一次):文件"/Users/YELI1/Downloads/googlecloud/sentimentanalysis/simple.py",第21行,sentiment_text(sampletxt)

文件"/Users/YELI1/Downloads/googlecloud/sentimentanalysis/simple.py",第5行,在sentiment_text client = language.LanguageServiceClient()中

init ssl_credentials = ssl_credentials中输入文件"/usr/local/lib/python3.6/site-packages/google/cloud/gapic/language/v1/language_service_client.py",第147行

在create_stub中的文件"/usr/local/lib/python3.6/site-packages/google/gax/grpc.py",第106行

credentials = _grpc_google_auth.get_default_credentials(scopes)   File
Run Code Online (Sandbox Code Playgroud)

"/usr/local/lib/python3.6/site-packages/google/gax/_grpc_google_auth.py",第62行,在get_default_credentials凭据中,_ = google.auth.default(scopes = scopes)

文件"/usr/local/lib/python3.6/site-packages/google/auth/_default.py",第282行,默认情况下

raise exceptions.DefaultCredentialsError(_HELP_MESSAGE) google.auth.exceptions.DefaultCredentialsError: Could not
Run Code Online (Sandbox Code Playgroud)

自动确定凭据.请设置GOOGLE_APPLICATION_CREDENTIALS或明确创建凭据并重新运行该应用程序.有关详细信息,请参阅 https://developers.google.com/accounts/docs/application-default-credentials.

import os 
print(os.environ['GOOGLE_APPLICATION_CREDENTIALS']) 
Run Code Online (Sandbox Code Playgroud)

输出回溯(最近一次调用最后一次):

  File "/Users/YELI1/Downloads/googlecloud/sentimentanalysis/simple??.py", line 2, in <module>  
print(os.environ['GOOGLE_APPLICATION_CREDENTIALS']) 
   File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework??/Versions/3.6/lib/py??thon3.6/os.py", line 669, …
Run Code Online (Sandbox Code Playgroud)

python google-api

27
推荐指数
5
解决办法
4万
查看次数

裁剪.pdf文件的页面

我想知道是否有人有任何编程与.pdf文件工作的经验.我有一个.pdf文件,我需要将每个页面裁剪到一定的大小.

快速搜索谷歌后,我找到了python的pyPdf库,但我的实验失败了.当我更改页面对象上的cropBox和trimBox属性时,结果不是我预期的,并且看起来非常随机.

有没有人有这方面的经验?代码示例将非常受欢迎,最好是在python中.

python pdf pypdf

14
推荐指数
3
解决办法
2万
查看次数

ttk treeview:备用行颜色

如何为treeview小部件设置样式,以便备用行具有不同的背景颜色,例如,行1,3,5具有白色背景,行2,4,6具有浅蓝灰色背景?

我也想设置gridlines.

python treeview tkinter ttk

12
推荐指数
1
解决办法
1万
查看次数

迭代工作表,行,列

我希望使用openpyxl这种方式打印python中特定列的所有数据(所有行);

from openpyxl import load_workbook
workbook = load_workbook('----------/dataset.xlsx')
sheet = workbook.active  
for i in sheet:
   print(sheet.cell(row=i, column=2).value)
Run Code Online (Sandbox Code Playgroud)

但它给出了

如果row <1或列<1:TypeError:unorderable类型:tuple()<int()

因为我在迭代row=i.如果我使用sheet.cell(row=4, column=2).value它打印单元格的值.但是,我如何迭代所有文档?

编辑1

在一些研究中,发现可以使用工作表名称获取数据.该Sheet 1中存在的.xlsx文件,但它的数据是不是打印.这段代码有什么问题吗?

workbook = load_workbook('---------------/dataset.xlsx')
print(workbook.get_sheet_names())
worksheet =workbook.get_sheet_by_name('Sheet1')
c=2
for i in worksheet: 
    d = worksheet.cell(row=c, column=2)
    if(d.value is None):
        return
    else:
        print(d.value)
    c=c+1
Run Code Online (Sandbox Code Playgroud)

python openpyxl

8
推荐指数
1
解决办法
2万
查看次数

弃用警告:

我试图遵循这个问题的答案,试图复制到剪贴板,但是答案中提供的所有解决方案似乎都让我失败。在 macOS 上,我已成功使用 pyperclip 和 subprocess.run 复制到剪贴板,如链接文章中所述,但是在 centOS 上都不起作用。我也尝试过在 macOS 上使用 Tkinter,但是当我运行以下简单代码时:

  from tkinter import Tk
  r = Tk()
Run Code Online (Sandbox Code Playgroud)

我收到以下弃用警告:

DEPRECATION WARNING: The system version of Tk is deprecated and may be removed in a future release. Please don't rely on it. Set TK_SILENCE_DEPRECATION=1 to suppress this warning.
Run Code Online (Sandbox Code Playgroud)

我真的不想用已弃用的依赖项构建我的应用程序,但是看到 centOS 不支持 pyperclip 或 subprocess.run 我觉得我没有其他选择。

具体来说,我想知道是否有一个好的解决方案来解决我的问题,也就是说,我想复制到centOS上的剪贴板,理想情况下,我想要一个可以在“大多数”平台上工作的解决方案。请注意,我使用的是 python3。谢谢

centos tkinter python-3.x

8
推荐指数
1
解决办法
2万
查看次数

解释Tkinter文本搜索方法

我不太明白text.search方法是如何工作的.例如,有一句话:Today a red car appeared in the park.我需要找到a red car序列并突出显示它.它被发现,但这是我突出显示的样子:

在此输入图像描述

在此输入图像描述

我正在使用self.text.search(word, start, stopindex=END)这句话.看起来搜索方法与python的regexp搜索完全相同.添加exact=True没有改变任何东西,因为它是默认行为,这就是为什么我不明白究竟是什么究竟真实的意思.如何a red car正确突出显示?

python search tkinter tkinter.text

7
推荐指数
1
解决办法
8013
查看次数

从List更新OptionMenu

我的GUI中有一个OptionMenu,由列表填充.每次用户运行某个进程时,列表都会更新以反映这一点.有没有办法根据列表更新OptionMenu?我self.plotWindow.update()按照这个问题尝试过,但无济于事.但是,关闭并重新打开窗口会像您期望的那样刷新OptionMenu.相关代码:

if self.figNum.get() == 'New Figure...':
    if self.figList[-1] == 'New Figure...':
        self.figList.append(1)
    else:
        self.figList.append(self.figList[-1]+1)
    self.plotWindow.update() #tk.Tk() window
    self.i = self.figList[-1]
else:
    self.i = self.figNum.get()
Run Code Online (Sandbox Code Playgroud)

python tkinter python-3.x tkinter.optionmenu

7
推荐指数
1
解决办法
9335
查看次数