[英]Python - Replacing characters in a list
我正在研究一个Python脚本,该脚本打开一个DBF文件,然后从中创建内容(.txt或.csv)的文本输出。
现在,我设法将其写入输出文件,但是我需要替换数据库字段之一中的空格字符(这是英国的汽车注册号,例如,我需要“ AB09 CDE”才能输出为“ AB09CDE”),但是我一直无法弄清楚该如何做,因为它似乎是嵌套列表。 该字段在下面的代码中为rec [7]。
if __name__ == '__main__':
import sys, csv
from cStringIO import StringIO
from operator import itemgetter
# Read a database
filename = 'DATABASE.DBF'
if len(sys.argv) == 2:
filename = sys.argv[1]
f = open(filename, 'rb')
db = list(dbfreader(f))
f.close()
fieldnames, fieldspecs, records = db[0], db[1], db[2:]
# Remove some fields that we don't want to use...
del fieldnames[0:]
del fieldspecs[0:]
#Put the relevant data into the temporary table
records = [rec[7:8] + rec[9:12] + rec[3:4] for rec in records]
# Create outputfile
output_file = 'OUTPUT.txt'
f = open (output_file, 'wb')
csv.writer(f).writerows(records)
这还在每个输出值的末尾添加了很多空格。 我将如何摆脱这些?
我对Python相当陌生,因此将不胜感激地收到任何指导!
问题是您正在使用切片:
>>> L = [1,2,3,4,5,6,7,8,9,10]
>>> L[7]
8
>>> L[7:8] #NOTE: it's a *list* of a single element!
[8]
要替换rec[7]
空格,请执行以下操作:
records = [[rec[7].replace(' ', '')] + rec[9:12] + rec[3:4] for rec in records]
records = [rec[7].replace(' ', '') + rec[9:12] + rec[3:4] for rec in records]
?
Python文档写道:str.replace(old,new [,count])返回该字符串的副本,其中所有出现的substring都被new替换。 如果给出了可选的参数count,则仅替换第一个出现的计数。 这个例子展示了它:
In [13]: a ="AB09CDE"
In [14]: a.replace(" ", "")
Out[14]: 'AB09CDE'
In [15]: print a
AB09CDE
因此,如果rec是字符串字段,则:
records = [rec.replace(" ", "") for rec in records]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.