小编Mik*_*ike的帖子

使用Python在XML中查找和替换值

我期待使用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 xml replace find

29
推荐指数
2
解决办法
6万
查看次数

在Python循环中构建字典 - 列表和字典理解

我在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字典,还是我离开基地?如果是这样,我将如何构建它?

python for-loop

29
推荐指数
3
解决办法
6万
查看次数

安装和运行pywin32 2.7时出错

安装后我想出了几个错误:

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,其中只有一台是抛出此错误.其余的工作正常.

谢谢,迈克

python installation winapi pywin32

17
推荐指数
4
解决办法
2万
查看次数

在python中截断一个字符串

有人给了我一个截断字符串的语法,如下所示:

string = "My Text String"

print string [0:3] # This is just an example
Run Code Online (Sandbox Code Playgroud)

我不确定这是什么(字符串[0:3]语法),所以我很难在互联网上查找它并理解它是如何工作的.到目前为止,我认为它的工作原理如下:

  • string [0:3]#返回字符串中的前3个字符
  • string [0:-3]#将返回字符串的最后3个字符
  • string [3:-3]#似乎截断前3个字符和后3个字符
  • string [1:0] #I返回2个单引号....不知道这是做什么的
  • string [-1:1]#与最后一个相同

无论如何,我可以添加一些其他示例,但我的观点是我是这个功能的新手,我想知道它的名称以及我可以在哪里找到更多相关信息.我确定我在某个地方错过了一个很好的参考.

谢谢你的任何建议,迈克

python truncate

16
推荐指数
2
解决办法
6万
查看次数

圆形到最接近的500,Python

我正在寻找一种方法来舍入到最近的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 rounding

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

Python的Colorama,不返回Windows上的彩色打印行

我为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 windows ansi

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

如何安装Colorama,Python

我下载了python的colorama模块,然后双击setup.py.屏幕闪烁,但是当我尝试导入模块时,它总是说'No Module named colorama'

我复制并粘贴了'C:\ Python26\Lib\site-packages'下的文件夹,并尝试从那里运行安装程序.同样的交易.难道我做错了什么?

谢谢,迈克

python colorama

13
推荐指数
2
解决办法
6万
查看次数

如何迭代工作簿中的工作表,openpyxl

我一直在使用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 excel openpyxl

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

确定一个数字是否均匀地除以25,Python

我正在尝试使用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)

欢迎任何建议.

python math

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

使用Python编写VBA脚本?

这可能有点延伸,但是有可能使用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中不可用.

无论如何,我在互联网上挖了一下,我没有看到任何表明我可以的东西,所以我想我会问.

干杯,迈克

python vba pywin32 excel-vba autosize

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