场景:
需要造一个XML文件,参数有来自数据库的,有特定范围的value。
简单化可以从文本取值放入另一个文本,再格式化成XML。
如下:
<L1 no="1234567890">
<L2>
<L3-1>A</L3-1>
<L3-2>33</L3-2>
</L2>
</L1>
<L1 no="0123456789">
<L2>
<L3-1>F</L3-1>
<L3-2>36</L3-2>
</L2>
</L1>
...
方法:
可以抽象出三个参数:
参数1 ’no‘来自数据库
参数2 random [“A”,“F”]
参数3 random {30-40}
对于参数我们运用以下方式处理:
- 参数1:我们从数据库取出放入source.txt表,写入目标文件target.txt
#-*- coding: UTF-8 -*-
with open("target.txt","w") as T:
for line in open("source.txt"): #一行一行地读
T.write(line) #一行一行地写
-
参数2: random.randint() 随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值。
-
参数3:random.choice() 可以从任何序列,比如list列表中,选取一个随机的元素返回,可以用于字符串、列表、元组等。
最终脚本如下:
#-*- coding: UTF-8 -*-
import random
p2_list= ["A","F"]
with open("target.txt","w") as fn: #'w' 文件不存在自动创建,如存在清空
for p1 in open("source.txt"):
p1 = p1.rstrip('\n')
p2 = random.choice(p2_list)
p3 = str(random.randint(31,39))
fn.write("<L1 no=" + p1 + '''> #拼接字符串
<L2>
<L3-1>''' + p2 + '''</L3-1>
<L3-2>''' + p3 + '''</L3-2>
</L2>
</L1>
''')
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
运行后:
菜鸟初期,没有考虑代码的效率和性能。以跑出结果为目的,欢迎老鸟拍砖指点。