Python 3多次拆分字符串

Posted

技术标签:

【中文标题】Python 3多次拆分字符串【英文标题】:Python 3 split string multiple times 【发布时间】: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 和拆分之后,但是当我尝试第二个拆分时它说它是一个列表。

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

任何帮助将不胜感激

【问题讨论】:

【参考方案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。我在帖子上进行了编辑 完美.. 我也应该抓住这一点

以上是关于Python 3多次拆分字符串的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 使用多次出现的“/”拆分字符串

在DataFrame中多次拆分字符串

Python 3.3:拆分字符串并创建所有组合

python 拆分字符串(3.0)

python将字符串数字拆分为数字

python拆分整型字符串并转为整型list