首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3多次拆分字符串

Python 3多次拆分字符串
EN

Stack Overflow用户
提问于 2021-12-11 04:36:20
回答 1查看 224关注 0票数 0

文本文件输入:

10g/主机_IP,UID,PWD,主机名,15-2-7

10g/主机_IP,UID,PWD,主机名,12-2-7

代码语言:javascript
复制
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

我要尝试的是将代码行从文本文件中分离出来-- rate和其余的参数、rate和其他参数--分成不同的变量。将速率传递到函数中,然后将变量params进一步拆分为更多变量(Host_IP、UID、PWD、主机名、SH_SL_PT)。

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

我尝试过连接,但它将每个字符作为自己的字符串,在字符之间加上",“。

如能提供任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-11 05:58:55

我们来看一遍密码。您的代码从这里开始:

代码语言:javascript
复制
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.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”。

在你的函数中,你看到的是一个字符串。因此,当您试图遍历它时,python假设您希望循环的每一次迭代都通过一个字符。

因此,您可以做的不是编写函数_10g_script,而是:

代码语言:javascript
复制
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做同样的操作,编写如下:

代码语言:javascript
复制
SH,SL,PT = SH_SL_PT.split("-") 

在你需要的地方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70312641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档