问题描述
我有一组地标,其中包含在属性中的气球中包含的相当广泛的描述。接下来,每个单独的描述(以前的列标题)都以 .由于 shapefile 命名限制为 10 个字符。
我必须手动重新输入其中的大部分名称。
显然,我使用 Notepad++,我可以在其中快速按 Ctrl+F 并切换替换模式,如下所示。
绿色有界字符串已被替换,红色有界字符串仍然存在。
基本上,如果我按“全部替换”,那么它工作正常且快速。不幸的是,我必须一个一个地去。如您所见,我有大约 20 个单独的字符串来“全部替换”。有没有可能做得更快?因为所有 .kml 文件彼此相似,所以这在任何地方都是一样的。我需要一些工具,它可以自动替换这些标题,减少 10 个字符的限制。我想,也许 Python 工具可能会有所帮助。
https://pythonhosted.org/pykml/
但是在上面的工具中没有关于批量 KML 编辑的信息。
如果可能,我如何最好为所有字符串设置类似“全部替换”工具的功能?
更新:
我尝试了以下代码:
files = []
with open("YesNF016.kml") as f:
for line in f.readlines():
if line[-1] == '\n':
files.append(line[:-1])
else:
files.append(line)
old_expression = 'ab'
new_expression = 'it worked'
for file in files:
new_file = ""
with open(file) as f:
for line in f.readlines():
new_file += line.replace(old_expression,new_expression)
with open(file,'w') as f:
f.write(new_file)
调试器显示:
[Errno 22] 无效参数:'' 文件“\test.py”,第 13 行,在 with open(file) as f:
而第 13 行是:
with open(file) as f:
这里的解决方案:
和
OSError: [Errno 22] Invalid argument Getting invalid argument while parsing xml in python
对我来说帮助不够。
解决方法
所以您想将一堆文件中所有出现的 X 替换为 Y 吗?
很简单。 只需创建一个包含要编辑的文件列表的 file_list.txt。
python 代码:
files = []
with open("file_list.txt") as f:
for line in f.readlines():
if line[-1] == '\n':
files.append(line[:-1])
else:
files.append(line)
old_expression = 'ab'
new_expression = 'it worked'
for file in files:
new_file = ""
with open(file) as f:
for line in f.readlines():
new_file += line.replace(old_expression,new_expression)
with open(file,'w') as f:
f.write(new_file)