【问题标题】:Python 3 split string multiple timesPython 3多次拆分字符串
【发布时间】:2022-01-15 15:01:17
【问题描述】:

文本文件输入:

10G/Host_IP,UID,PWD,Host-Name,15-2-7

10G/Host_IP,UID,PWD,Host-Name,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、Host-Name、SH_SL_PT)。

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

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

任何帮助将不胜感激

【问题讨论】:

    标签: python-3.x string list split


    【解决方案1】:

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

    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("-") 
    

    无论您需要什么。

    【讨论】:

    • 这比为所有费率编写函数要好,在我计算出 10g 后要添加 1g 和 100g。顺便说一句,这是为了远程登录电信设备。 10 克 = 10 演出。当我尝试 SH,SL,PT = SH_SL_PT.split("_") ValueError: not enough values to unpack (expected 3, got 1)
    • 我的错,意味着有 SH,SL,PT = SH_SL_PT.split("-")。对于“_”,我们拆分的列表中没有足够的值进入 SH、SL 和 PT。我在帖子上进行了编辑
    • 完美.. 我也应该抓住这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2019-10-19
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    相关资源
    最近更新 更多