我正在尝试编写一个Python脚本,该脚本标识字符串中的前两个字符,并基于它们对每个字符串进行特定更改。
在工作中,我们在不同的系统上有帐户。帐号的变化取决于您在哪个系统上查找该帐号。 例如: 系统1帐号为23456 系统2中的相同帐户为24456
最初的23变为24,其余的保持不变。我们可以通过三种不同的方式更改前两个字符。
我努力编写了一个Python脚本,该脚本可以识别每个字符串中的前两个字符,并根据它们进行适当的更改。
这是我到目前为止所拥有的:
import csv
inputfile = csv.reader(open('/users/user/accounts.csv', 'r'))
outputfile = open('/users/user/converted_accounts.txt', 'w')
for row in inputfile:
if row.startswith('23')
row.replace('23', '24', 1)
print row
outputfile.write(row)
elif row.startswith('26')
row.replace('26', '27', 1)
print row
outputfile.write(row)
elif row.startswith('3')
row.replace('3', '0', 1)
print row
outputfile.write(row)
else:
print(row)
outputfile.write(row)
我从第一个if语句开始出现语法错误。我没有使用Python的经验,并且过去几天一直在自行研究以使其能够正常工作。
提前谢谢!
答案 0 :(得分:0)
在:
和if
语句的末尾缺少elif
。
根据您使用的是Python 2还是Python 3,您的print
语句也会出现问题。
在Python 3中(由于您是Python的新手),您的代码应如下所示:
import csv
inputfile = csv.reader(open('/users/user/accounts.csv', 'r'))
outputfile = open('/users/user/converted_accounts.txt', 'w')
for row in inputfile:
if row.startswith('23'):
row.replace('23', '24', 1)
print(row)
outputfile.write(row)
elif row.startswith('26'):
row.replace('26', '27', 1)
print(row)
outputfile.write(row)
elif row.startswith('3'):
row.replace('3', '0', 1)
print(row)
outputfile.write(row)
else:
print(row)
outputfile.write(row)
此外,打开文件时请考虑使用context managers
答案 1 :(得分:0)
在dhui的进一步答复中,提出了使您的代码正常工作的想法,以下是一些有关打开/关闭文件以进行读写的更简洁方法(在单个语句中)的建议,以及一些更简单的替换字符串的方法。希望对您有所帮助。
inputfile = '/users/user/accounts.csv'
outputfile = '/users/user/converted_accounts.txt'
with open(inputfile, 'r') as ifile, \
open(outputfile, 'w') as ofile:
# create a loop to read the lines
while True:
line = ifile.readline()
#exit the loop if there are no more lines
if not line:
break
if line[0:2] == '23':
line = '24' + line[2:]
#elif... (write other conditions here)
print(line)
ofile.write(line)
print('finished!')