小编otr*_*rov的帖子

Unicode文件名到python subprocess.call()

我正在尝试使用unicode文件名运行subprocess.call(),这里是简化的问题:

n = u'c:\\windows\\notepad.exe '
f = u'c:\\temp\\nèw.txt'

subprocess.call(n + f)
Run Code Online (Sandbox Code Playgroud)

这提出了一个着名的错误:

UnicodeEncodeError:'ascii'编解码器不能编码字符u'\ xe8'

对utf-8进行编码会产生错误的文件名,而mbcs会将文件名作为new.txt传递而不需要重音

我只是无法阅读这个令人困惑的主题并旋转圈.我在这里找到了很多不同问题的答案,所以我想加入并自己寻求帮助

谢谢

python unicode subprocess call

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

从 lxml xpath 查询操作列表

今天我尝试了 lxml,因为我从特定的 web 服务中得到了非常讨厌的 html 输出,我不想使用 re 模块,只是为了改变和学习新的东西。我做到了,并行浏览http://codespeak.net/lxml/http://stackoverflow.com

我不会试图解释上面的 html 模板,但只是为了概述它充满了故意嵌套的表格。

我用 html 解析器提取了感兴趣的部分,然后 find_class() 并用 xpath 遍历 TR(甚至这个 TR 里面都有表)。现在我正在尝试根据 class 和 id 属性提取数据对:

  • 名字孩子有类“标题”
  • 价值孩子有id“文本”

代码如下所示:

fragment = root.find_class('foo')

for node in fragment[0].xpath('table[2]/tr'):
    name = node.xpath('//div[@id="title"]')
    value = node.xpath('//td[@class="text"]')
Run Code Online (Sandbox Code Playgroud)

问题是并非我迭代的每个 TR 都有这些对:有些只有名称(id“title”),所以稍后当我尝试压缩它们时,我得到了错误的配对数据。

我尝试了几件事,但没有成功:我尝试比较列表长度(名称和值),如果它们不匹配跳过名称查找,那么如果它们不匹配,则删除最后一个列表项(在很多方面)但没有任何效果。例如:

if not len(name) == len(value):
    name.pop()
Run Code Online (Sandbox Code Playgroud)

或者

if len(name) == len(value):
    name = node.xpath('//div[@id="title"]')

value = node.xpath('//td[@class="text"]')
Run Code Online (Sandbox Code Playgroud)

一些经验丰富的评论?

python xpath lxml

3
推荐指数
1
解决办法
7491
查看次数

标签 统计

python ×2

call ×1

lxml ×1

subprocess ×1

unicode ×1

xpath ×1