求助:如何用python脚本删除文本中的重复行(相同记录只保留一个)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助:如何用python脚本删除文本中的重复行(相同记录只保留一个)相关的知识,希望对你有一定的参考价值。

参考技术A :em06:
楼上的代码看不懂,能不能解释一下?
我的方案要短也可以,看下面:h,r,w
=,
file('data'),
file('newdata','w')w.write(reduce(lambda
x,y:x+y,
[i
for
i
in
r
if
h.get(i)==None
and
h.setdefault(i,
True)]))复制代码[
本帖最后由
retuor

2008-8-23
00:35
编辑
]

求助,怎么运用Python脚本批量替换mxd文件中的文本?

如题,求助,怎么运用Python脚本批量替换mxd文件中的文本?
好比多个mxd文件中都有个文本“2013年9月10日”,现在要改成“2012年12月10日”

import arcpy, string, os
#Read input parameters from script tool
Path = arcpy.GetParameterAsText(0)
oldText = arcpy.GetParameterAsText(1)
newText = arcpy.GetParameterAsText(2)
case = arcpy.GetParameter(3)
exact = arcpy.GetParameter(4)
outputMXD = arcpy.GetParameterAsText(5)
try:
    #Referent the map document
    mxd = arcpy.mapping.MapDocument(mxdPath)        
    #Find all page layout text elements
    for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):     
        if exact:
            if case:
                if oldText == elm.text:
                    elmText = elm.text.replace(oldText, newText)
                    elm.text = elmText
            else:
                if oldText.upper() == elm.text.upper():
                    elmText = elm.text.upper().replace(oldText, newText)
                    elm.text = elmText   
        else:
            if case:
                if oldText in elm.text:
                    elmText = elm.text.replace(oldText, newText)
                    elm.text = elmText
            else:
                if oldText.upper() in elm.text.upper():
                    elmText = elm.text.upper().replace(oldText, newText)
                    elm.text = elmText                  
    mxd.saveACopy(outputMXD)
    del mxd
except Exception, e:
    import traceback
    map(arcpy.AddError, traceback.format_exc().split("\\n"))
    arcpy.AddError(str(e))追问

你好,这段代码怎么运行呢,我还是个新手,能讲一下具体怎么使用吗?

参考技术A 这个,是在文件系统中寻找mxd文件。类似walk的函数
第二个,是针对每个文件,用正则表达式匹配。不过可能字符串编码也要注意。具体的你要调试了
参考技术B files = ['a.mxd', 'b.mxd']

def readit(fn):
    with open(fn) as f:
        return f.read()
        
def writeto(fn, s):
    with open(fn, 'w') as f:
        f.write(s)
        
for fn in files:
    writeto(fn, readit(fn).replace(“2013年9月10日”, “2012年12月10日”))

以上是关于求助:如何用python脚本删除文本中的重复行(相同记录只保留一个)的主要内容,如果未能解决你的问题,请参考以下文章

逐行删除文本文件中的重复项

如何用C语言监视一文件,(可以隔一定时间检测该文件),当文件相比较上一时间有改动时,读出改动处

求助,怎么运用Python脚本批量替换mxd文件中的文本?

求助如何用bat整理文件内容,并输出结果?

使用 Pandas 删除 Python 中的多余行 [重复]

如何用 Greasemonkey 的用户脚本替换 JSON 字符串中的文本