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多次拆分字符串的主要内容,如果未能解决你的问题,请参考以下文章