Python 3 多次拆分字符串

Python 3 split string multiple times

文本文件输入:

10G/Host_IP,UID,PWD,主机名,15-2-7

10G/Host_IP,UID,PWD,主机名,12-2-7

root = tk.Tk()
root.attributes("-topmost", True) 
root.withdraw()
file = tkinter.filedialog.askopenfilename()

def _10g_script (params):

    print (type(params))   ## says params is a str


    for items in params:
        params1 = items.split(",")
##    print(IP, UID, PWD, TID, SH_SL_PT)   ## is what I am wanting here, 
                                           ##then I will split the SH_SL_PT
        print (type(params1))  ## says params is a list


with open(file,"r") as fh:
    for lines in fh:
        rate, param = lines.strip().split("/")
        
        if rate == "10G":
            _10g_script(param)
           print (type(param))  ## says param is a str

我想要的是将文本文件中的行拆分为速率和其余参数,速率和其他参数到单独的变量中。将速率传递给函数,然后将变量参数进一步拆分为更多变量(Host_IP、UID、PWD、主机名、SH_SL_PT)。

第一次拆分是一个 str,拆分之后,但是当我尝试第二次拆分时,它说它是一个列表。

我试过加入,但它把每个字符都作为自己的字符串,字符之间有一个“,”

如有任何帮助,我们将不胜感激

让我们看一下代码。您的代码从这里开始:

with open(file,"r") as fh:
for lines in fh:
    rate, param = lines.strip().split("/")
    
    if rate == "10G":
        _10g_script(param)
       print (type(param))  ## says param is a str

我们先打开文件,然后跳入for循环。这个循环将文档分成几行,并将这些行放入它经过的列表中,这意味着变量 lines 是文档一行的字符串,每次迭代我们转到下一行。

接下来我们使用“/”拆分我们的 。此拆分创建一个包含两个元素的列表,其中 lines.strip().split("/") = ["10G","Host_IP,UID,PWD,Host-Name,12-2-7 ”]。但是,在左侧放置了两个变量,rate 和 param,因此 python 设置 rate = "10G" 和 param = "Host_IP,UID,PWD,Host-Name,12-2-7 ".

进入您的函数,如您所见,params 是一个字符串。因此,当您尝试遍历它时,python 假定您希望循环的每次迭代都经过一个字符。

因此,除了编写函数 _10g_script,您可以做的是:

with open(file,"r") as fh:
for lines in fh:
    rate, param = lines.strip().split("/")
    
    if rate == "10G":
       #IP = "Host_IP", UID = "UID", TID = "TID", SH_SL_PT  
       IP, UID, PWD, TID, SH_SL_PT = param.split(",") 
       print(IP,UID,TID,SH_SL_PT)

然后你会为 SH_SL_PT 做同样的事情,写作:

SH,SL,PT = SH_SL_PT.split("-") 

任何你需要的地方。