我期待使用python编辑XML文件.我想找到并替换标签中的关键字.过去,同事已经设置了模板XML文件,并使用"查找和替换"程序来替换这些关键词.我想使用python来查找并用值替换这些关键字.我一直在教自己Elementtree模块,但是我在尝试查找和替换时遇到了麻烦.我附上了一个我的XML文件.您将看到一些由%包围的变量(即%SITEDESCR%)这些是我想要替换的单词,然后将XML保存到新文件中.任何帮助或建议都会很棒.
谢谢,迈克
<metadata>
<idinfo>
<citation>
<citeinfo>
<origin>My Company</origin>
<pubdate>05/04/2009</pubdate>
<title>POLYGONS</title>
<geoform>vector digital data</geoform>
<onlink>\\C$\ArcGISDevelopment\Geodatabase\PDA_STD_05_25_2009.gdb</onlink>
</citeinfo>
</citation>
<descript>
<abstract>This dataset represents the mapped polygons developed from the field data for the %SITEDESCR%.</abstract>
<purpose>This dataset was created to accompany some stuff.</purpose>
</descript>
<timeperd>
<timeinfo>
<rngdates>
<begdate>%begdate%</begdate>
<begtime>unknown</begtime>
<enddate>%enddate%</enddate>
<endtime>unknown</endtime>
</rngdates>
</timeinfo>
<current>ground condition</current>
</timeperd>
Run Code Online (Sandbox Code Playgroud) 我在python中玩一些循环.我对使用"for"循环非常熟悉:
for x in y:
do something
Run Code Online (Sandbox Code Playgroud)
您还可以使用循环创建一个简单列表:
i = []
for x in y:
i.append(x)
Run Code Online (Sandbox Code Playgroud)
然后我最近发现了一个很好的有效类型的循环,在这里,在堆栈上,建立一个列表(这种类型的循环有一个名称吗?我真的很想知道所以我可以更好地搜索它):
[x.name for x in y]
Run Code Online (Sandbox Code Playgroud)
好吧,话虽这么说,我想进一步使用最后一种类型的循环,我尝试使用相同类型的逻辑构建一个python字典:
{x[row.SITE_NAME] = row.LOOKUP_TABLE for row in cursor}
Run Code Online (Sandbox Code Playgroud)
而不是使用:
x = {}
for row in cursor:
x[row.SITE_NAME] = row.LOOKUP_TABLE
Run Code Online (Sandbox Code Playgroud)
我在等号上收到一条错误消息,告诉我这是一个无效的语法.我相信在这种情况下,它基本上告诉我等号是条件子句(==),而不是变量的声明.
我的第二个问题是,我可以使用这种类型的循环构建一个python字典,还是我离开基地?如果是这样,我将如何构建它?
安装后我想出了几个错误:
pywin32-217.win32-py2.7
我最近将ArcGIS升级到10.1,它使用的是Python 2.7(而不是ArcGIS 10.0附带的2.6)
当我在Windows 7 64位上运行安装程序时,它会安装,但会抛出以下消息:
在文件对象析构函数中关闭失败:
缺少sys.excepthook
丢失了sys.stderr
我有一个简单的python脚本从包含.pdf文件的文件夹打印到打印机,这些文件在升级之前有效
import arcpy, glob, win32api, os
pdfLoc = arcpy.GetParameterAsText(0)
try:
copies = int(arcpy.GetParameter(1))
except:
copies = 1
for pdfname in glob.glob(os.path.join(pdfLoc, "*.pdf")):
fullpath = os.path.join(pdfLoc, pdfname)
for copy in range(copies):
win32api.ShellExecute(0, "print", pdfname, None, ".", 0)
del fullpath
del pdfname
del pdfLoc
Run Code Online (Sandbox Code Playgroud)
现在,当我运行脚本时,我收到以下错误:
回溯(最近一次调用最后一次):文件"Z:\ ESRI\Python\Solstice_Tools_Scripts\Printer_Tools\Batch_Print_From_PDF_Only\BatchprintFromPDFOnly_Test.py",第34行,在win32api.ShellExecute(0,"print",pdfname,None,".", 0)错误:(31,'ShellExecute','连接到系统的设备无法运行.')
无法执行(BatchPrintFromPDFOnly2).
我一直在谷歌搜索并尝试了一些解决方案,比如在故障排除模式下运行可执行文件,但错误仍然存在.谁能提出可能导致这种情况的人?
作为旁注,我将公司中的4台计算机升级到新版本的python和ArcGIS,其中只有一台是抛出此错误.其余的工作正常.
谢谢,迈克
有人给了我一个截断字符串的语法,如下所示:
string = "My Text String"
print string [0:3] # This is just an example
Run Code Online (Sandbox Code Playgroud)
我不确定这是什么(字符串[0:3]语法),所以我很难在互联网上查找它并理解它是如何工作的.到目前为止,我认为它的工作原理如下:
无论如何,我可以添加一些其他示例,但我的观点是我是这个功能的新手,我想知道它的名称以及我可以在哪里找到更多相关信息.我确定我在某个地方错过了一个很好的参考.
谢谢你的任何建议,迈克
我正在寻找一种方法来舍入到最近的500.I一直在使用:
math.ceil(round(8334.00256 + 250, -3))
Run Code Online (Sandbox Code Playgroud)
因此,我在ArcGIS中制作的地图中的比例值.我有能力读取和写入比例因子(即1:8334 ....基本上,你设置千分之一,它默认为一个比例)如果比例因子不是500的因素,我想要向上舍入math.ceil将向上舍入任何十进制值,并且回合(n,-3)将舍入到最接近的千分之一,但我正在努力找到一种方法来舍入到最接近的500.
有什么建议?谢谢,迈克
我为python安装了colorama.我按如下方式导入了模块:
import colorama
from colorama import init
init()
from colorama import Fore, Back, Style
print Fore.RED + "My Text is Red"
Run Code Online (Sandbox Code Playgroud)
它返回ANSI字符....
esc[31mMy Text is Red
Run Code Online (Sandbox Code Playgroud)
这不是我的预期.难道我做错了什么.
谢谢.
我下载了python的colorama模块,然后双击setup.py.屏幕闪烁,但是当我尝试导入模块时,它总是说'No Module named colorama'
我复制并粘贴了'C:\ Python26\Lib\site-packages'下的文件夹,并尝试从那里运行安装程序.同样的交易.难道我做错了什么?
谢谢,迈克
我一直在使用openpyxl模块对一些.xlsx文件进行一些处理.我一直在试图弄清楚如何迭代工作簿中的工作表.我不确定我能不能弄明白.我已经尝试了下面的两个代码,它们都返回空结果.我的.xlsx文件大约有20张,所以应该返回一些东西.
我在互联网上找不到的一件事是如何将工作簿设置为实际的工作簿.通常我写的是工作簿,所以我只是通过将变量设置为空工作簿来初始化它,workbook = Workbook()但在这种情况下,我不确定是否可以通过执行来打开工作簿workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")
如果有人能够确定我做错了什么,我将不胜感激.
这是我的代码:
workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")
for sheet in workbook.worksheets:
print sheet
# or
for sheet in workbook.worksheets:
print sheet.title
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python检查列表中的每个数字是否可被25整除.我不确定什么是正确的过程.我想做这样的事情:
n = [100, 101, 102, 125, 355, 275, 435, 134, 78, 550]
for row in rows:
if n / 25 == an evenly divisble number:
row.STATUS = "Major"
else:
row.STATUS = "Minor"
Run Code Online (Sandbox Code Playgroud)
欢迎任何建议.
这可能有点延伸,但是有可能使用pythonwin或任何其他模块可以使用python脚本在MS Excel(或使用VBA的任何其他MS Office产品)中创建VBA.
这个想法来自于蟒蛇openpyxl模块无法进行列自动宽度.我在脚本中创建了一个工作簿,最终将其保存到光盘中.每张纸都有相当多的纸张,有很多列.我开始思考......如果我只是使用python将一个VBA脚本(保存在记事本中的某个地方)导入到excel中的VBA编辑器中,然后使用pythonwin从python运行该脚本.
就像是:
Workbooks.worksheets.Columns("A:Z").EntireColumn.Autofit
Run Code Online (Sandbox Code Playgroud)
在您发表评论之前,是的,我已经看到了很多关于如何解决openpyxl中自动调整列的pythonic示例,但我看到了一些有趣的机会,可以利用从VBA中获得的功能,可能在python中不可用.
无论如何,我在互联网上挖了一下,我没有看到任何表明我可以的东西,所以我想我会问.
干杯,迈克