字符串输入上的反斜杠

时间:2018-12-05 16:55:38

标签: python python-3.x

我必须为一个类编写代码,其中我必须定义一个函数,并且参数来自input()。输入将始终是一个字符串,数字和字母之间必须紧跟其后,形式为:“” 5 2 S 2 333 A“”。根据两个数字后面的字母,我必须对前两个数字使用特定的功能。为此,我通过字符串输入并将每个元素添加到列表中,以便更轻松地使用它们。我的问题是,最后一个元素的第一个和最后一个元素始终以反斜杠开头/结尾,从而使得无法对数字进行int()操作,而我也不知道为什么以及如何摆脱它们。这是我的代码,如果您知道一种更简单的方法,我将不胜感激,但是我主要想知道反斜杠的来源...

def addition(a,b): 
    return a + b
def soustraction(a,b):
    return a - b
def multiplication(a,b):
    return a * b
if __name__ == '__main__':
    c = input() #here comes the string input
    ma_liste = [] #the list where i want to add the elements of my string
    for i in range(0, len(c)): #checking each element of the string
        if i == 0:
            for j in range(len(c)):
                if " " in c[i:j+2]:
                    ma_liste.append(c[i:j+1])
                    break
        else:
            for j in range(i,len(c)): #check if there is a space to know where the number ends
                if c[i:j+1] == c[i-1:j+2].strip():
                    ma_liste.append(c[i:j+1])
                    break
    for e in range(len(ma_liste)): #going through the elements of my list

        if ma_liste[e].isdigit():
            int(ma_liste[e])
        if ma_liste[e].isalpha():
            if ma_liste[e] == "S":
                soustraction(int(ma_liste[e-2]),int(ma_liste[e-1]))
            if ma_liste[e] == "A":
                addition(int(ma_liste[e-2]),int(ma_liste[e-1]))
            if ma_liste[e] == "M":
                multiplication(int(ma_liste[e-2]),int(ma_liste[e-1]))

1 个答案:

答案 0 :(得分:1)

欢迎来到SO。似乎这里的问题是当您直接读取数据时,行'\n'的末尾被附加。可以将整个ndarray转换为使用numpy.asarray dtype=int.,这将解决您的问题。希望能帮助到你。 :)

import numpy as np    
a = ['1','2','3\n']
print(a)
b = np.asarray(a,dtype=np.int)
print(b)

输入:['1','2','3 \ n']

输出:[1 2 3]