根据初始字符修改字符串内容

时间:2019-01-15 03:05:57

标签: python css

我正在尝试编写一个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的经验,并且过去几天一直在自行研究以使其能够正常工作。

提前谢谢!

2 个答案:

答案 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!')