我有一个 xml,它的一小部分看起来像这样:
<?xml version="1.0" ?>
<i:insert xmlns:i="urn:com:xml:insert" xmlns="urn:com:xml:data">
<data>
<image imageId="1"></image>
<content>Content</content>
</data>
</i:insert>
Run Code Online (Sandbox Code Playgroud)
当我使用解析它ElementTree
并将其保存到文件时,我看到以下内容:
<ns0:insert xmlns:ns0="urn:com:xml:insert" xmlns:ns1="urn:com:xml:data">
<ns1:data>
<ns1:image imageId="1"></ns1:image>
<ns1:content>Content</ns1:content>
</ns1:data>
</ns0:insert>
Run Code Online (Sandbox Code Playgroud)
为什么它会改变前缀并将它们放在任何地方?使用minidom
我没有这样的问题。配置了吗?的文档ElementTree
很差。问题是,我无法找到任何节点,解析后,例如image
-不能带或不带命名空间找到它,如果我使用它像{namespace}image
或只image
。为什么?任何建议都非常感谢。
我已经尝试过的:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for a in root.findall('ns1:image'):
print a.attrib
Run Code Online (Sandbox Code Playgroud)
这将返回一个错误,而另一个不返回任何内容:
for a in root.findall('{urn:com:xml:data}image'):
print a.attrib
Run Code Online (Sandbox Code Playgroud)
我也尝试制作这样的命名空间并使用它:
namespaces = {'ns1': 'urn:com:xml:data'}
for a in root.findall('ns1:image', namespaces):
print a.attrib
Run Code Online (Sandbox Code Playgroud)
它什么都不返回。我究竟做错了什么?
编者注:这个问题总是关于循环性能,但最初的标题导致一些回答者 - 和选民 - 相信它是关于如何删除Windows行结尾.
下面的bash循环只是删除windows行结尾并将它们转换为unix并且似乎正在运行,但它很慢.输入文件很小(4个文件,范围从167字节 - 1 kb),并且都是相同的结构(名称列表),唯一不同的是长度(即一些文件是10个名称,其他文件是50).是否需要花费超过15分钟才能使用至强处理器完成此任务?谢谢 :)
for f in /home/cmccabe/Desktop/files/*.txt ; do
bname=`basename $f`
pref=${bname%%.txt}
sed 's/\r//' $f - $f > /home/cmccabe/Desktop/files/${pref}_unix.txt
done
Run Code Online (Sandbox Code Playgroud)
输入.txt文件
AP3B1
BRCA2
BRIP1
CBL
CTC1
Run Code Online (Sandbox Code Playgroud)
编辑
这不是重复,因为我更多地要求为什么我用于删除Windows行结尾的bash
循环sed
运行得如此之慢.我不是故意暗示如何删除它们,是在寻求可能加速循环的想法,而且我得到了很多.谢谢 :).我希望这有帮助.
我需要一个函数来计算每个字母出现在字符串中的次数.它必须将大写字母和小写字母统计为相同的字母.我有点做了,但它并不完美.
def lmao(x):
aye=x.count("a")
Aye=x.count("A")
bye=x.count("b")
Bye=x.count("B")
cye=x.count("c")
Cye=x.count("C")
dye=x.count("d")
Dye=x.count("D")
Eye=x.count("E")
eye=x.count("e")
Fye=x.count("F")
fye=x.count("f")
Gye=x.count("G")
gye=x.count("g")
Hye=x.count("H")
hye=x.count("h")
Iye=x.count("I")
iye=x.count("i")
Jye=x.count("J")
jye=x.count("j")
Kye=x.count("K")
kye=x.count("k")
Lye=x.count("L")
lye=x.count("l")
Mye=x.count("M")
mye=x.count("m")
Nye=x.count("N")
nye=x.count("n")
Oye=x.count("O")
oye=x.count("o")
Pye=x.count("P")
pye=x.count("P")
Qye=x.count("Q")
qye=x.count("q")
rye=x.count("r")
Rye=x.count("R")
sye=x.count("s")
Sye=x.count("S")
tye=x.count("t")
Tye=x.count("T")
uye=x.count("u")
Uye=x.count("U")
Vye=x.count("V")
vye=x.count("v")
Wye=x.count("W")
wye=x.count("w")
Xye=x.count("X")
xye=x.count("x")
Yye=x.count("Y")
yye=x.count("y")
Zye=x.count("Z")
zye=x.count("z")
killme=(aye+Aye,bye+Bye,cye+Cye,Dye+dye,Eye+eye,Fye+fye,Gye+gye,Hye+hye,Iye+iye,jye+Jye,Kye+kye,Lye+lye,Mye+mye,Nye+nye,Oye+oye,Pye+pye,Qye+qye,rye+Rye,sye+Sye,Tye+tye,uye+Uye,Vye+vye,Wye+wye,xye+Xye,Yye+yye,Zye+zye)
return killme
Run Code Online (Sandbox Code Playgroud)
所以,是的,那就是我想出的灾难.有没有办法缩短这个过程?
我有一个案例,我需要一个文件post-process
.样本格式如下: -
bigspeedpro.com Intel::DOMAIN from http://malc0de.com/bl/BOOT via intel.criticalstack.com F
1.1.1.1 Intel::DOMAIN from http://abcd.com/bl/BOOT via intel.criticalstack.com F
Run Code Online (Sandbox Code Playgroud)
预期产量为: -
1.1.1.1 abcd
Run Code Online (Sandbox Code Playgroud)
解析如下: -
如果以IP地址开头
from
来 F
替换它我想使用,sed但我不知道如果sed
可以用来匹配多个字符串,例如malc0de或abc或许我需要一个更完整的脚本然后只是一行存储字符串值在数组中.任何的想法?顺便说一句,使用的例子sed
最受欢迎.
至今
d
在sed中使用我可以删除行并将输出重定向到文件Run Code Online (Sandbox Code Playgroud)\#!/bin/bash sed -i s/\[a-zA-Z]\/d test ./infile > testme.txt sed -i s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/s+\Intel::DOMAIN\\s*from(.*?)\s+F\1malc0de
或者我想保存像ARRAY =(malc0de abcd)
然后代替捕获组我可以做$ {ARRAY [2]}它会起作用吗?或者我可以做一些像.net子串匹配之间的东西 from
和F
我复制结果的字符串变量.然后搜索我的字符串,例如malc0de,如果找到替换匹配结果的搜索模式?但我不知道bash ......
更新 使用awk脚本我很干净
Run Code Online (Sandbox Code Playgroud)1.1.1.1 www.abc.com 1.1.2.2 def.com 2.2.2.2 mnx.dbc.net
但是,我希望将ip地址后的第二列缩短为我自己选择的字符串,例如在第二列中我只接受
abc def …
我在python列表上有一个城市列表:
Citylist = ["Lexington, KY", "New York, NY", "Tampa FL"]
Run Code Online (Sandbox Code Playgroud)
如何使用python在地图上添加这些点(最好是交互式地图)?有没有办法,我可以使用谷歌地图或其他服务,但直接从python代码发送数据.
python ×3
bash ×2
linux ×2
python-2.7 ×2
sed ×2
elementtree ×1
gawk ×1
performance ×1
python-2.x ×1
regex ×1
ubuntu ×1
xml ×1
xml-parsing ×1