我正在尝试解析UTF-8 XML文件并将其中的一些部分保存到另一个文件中.问题是,这是我的第一个Python脚本,我对我发现的字符编码问题感到困惑.
我的脚本在尝试将非ascii字符写入文件时立即失败,但它可以将其打印到命令提示符(至少在某种程度上)
这是XML(来自至少重要的部分,它是包含UI字符串的*.resx文件)
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="foo">
<value>bar</value>
</resheader>
<data name="lorem" xml:space="preserve">
<value>ipsum öä</value>
</data>
</root>
Run Code Online (Sandbox Code Playgroud)
这是我的python脚本
from xml.dom.minidom import parse
names = []
values = []
def getStrings(path):
dom = parse(path)
data = dom.getElementsByTagName("data")
for i in range(len(data)):
name = data[i].getAttribute("name")
names.append(name)
value = data[i].getElementsByTagName("value")
values.append(value[0].firstChild.nodeValue.encode("utf-8"))
def writeToFile():
with open("uiStrings-fi.py", "w") as f:
for i in range(len(names)):
line = names[i] + '="'+ values[i] + '"' #varName='varValue'
f.write(line)
f.write("\n")
getStrings("ResourceFile.fi-FI.resx")
writeToFile()
Run Code Online (Sandbox Code Playgroud)
这是追溯:
Traceback (most recent call last): …
我有两张桌子;productstorymap和stories。productstorymap有productId和storyId列。stories有id和status列。
我需要查询属于某个产品并具有某种状态的所有故事。我得到的最接近的东西是
SELECT map.*, story.*
FROM productstorymap map, stories story
WHERE map.productId=1 AND story.status=1
Run Code Online (Sandbox Code Playgroud)
但它返回不属于产品 1 的故事。它返回如下内容:
Array
(
[0] => Array
(
[id] => 1
[productId] => 1
[storyId] => 1
[name] => Create a User Story
[content] => Admin should be able to create user stories.
[duration] => 1
[priority] => 0
[created] => 2010-09-22 17:36:21
[edited] =>
[status] => 1
) …Run Code Online (Sandbox Code Playgroud) 给出以下标记
<div>
<a>Username1</a>
</div>
<div>
<button>Unblock</button>
</div>
<div>
<a>Username2</a>
</div>
<div>
<button>Unblock</button>
</div>
<div>
<a>Username3</a>
</div>
<div>
<button>Unblock</button>
</div>
Run Code Online (Sandbox Code Playgroud)
如何选择a具有文本Username2 的元素表兄弟的按钮元素?
我可以选择a元素//a[contains(., 'Username2')],所以我认为//a[contains(., 'Username2')]/following-sibling::/div/button会选择正确的按钮,但这不起作用.我认为它甚至不是有效的XPATH.