如何基于输入字符串中=的出现从大字符串中提取子字符串,从而基于=符号的出现产生两个列表

时间:2019-03-24 23:16:16

标签: python

要根据组成输入字符串的事务中是否出现=字符,从事务字符串中生成两个列表。交易是30年基本程序输入的结果。

Python的新手,花了比我想花更多的时间来读书,参加在线课程和访问网站。似乎无法通过我的大脑得到它。已经引用了正则表达式材料,但仍然无法正常工作。

'“ 1197 51.44FO +”“ 01 5699.11 = BB +”“ 1198VOID .00MIS +”“ 1179 37.76UT +”'

这是交易数据输入字符串的示例。 =字符表示存款交易。交易是分开的(以“ +”分隔)。存款和支票交易似乎都以“ +”结尾并以“

开头”

我想输出两个列表。一种用于存款,另一种用于支票。然后,我将能够对两个列表进行简单的汇总/查询。

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解,但这确实满足了我的要求:

deposits = []
checks = []
line = r'" 1197 51.44FO +"" 01 5699.11=BB+"" 1198VOID .00MIS+"" 1179 37.76UT+"'
bits = line.split("\"")
for i in bits:
    try:
        if i[0] == ' ' and i[-1] == '+':
            if '=' in i:
                deposits.append(i[1:-1])
            else:
                checks.append(i[1:-1])
    except IndexError:
        pass

答案 1 :(得分:0)

这是我在这里获得输入的最新代码。我希望有更好的代码会受到赞赏;

deposits = []
checks = []
line = '""  1197                         51.44FO +""   01                        5699.11=BB+"" 1198VOID                        .00MIS+"" 1199                          55.55FO +""   01                        4699.11=BB+""'
bits = line.split('+""')  #same as my code above
#print (bits[0])  #prints line
for i in bits:
    #print (i)
    if '=' in i:
        deposits.append(i[1:-3])
    else:
        checks.append(i[1:-3])