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("-")
任何你需要的地方。
文本文件输入:
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("-")
任何你需要的地方。