Python 什么正则表达式可以用于获取以下响应的数据帧
早上好,我有一个问题或担忧,我正在使用python与一些计算机建立ssh连接并获得答案,问题是在数据帧中有一个我无法以最佳方式获得的答案 我的答案如下:Python 什么正则表达式可以用于获取以下响应的数据帧,python,regex,dataframe,Python,Regex,Dataframe,早上好,我有一个问题或担忧,我正在使用python与一些计算机建立ssh连接并获得答案,问题是在数据帧中有一个我无法以最佳方式获得的答案 我的答案如下: print(data) Interface PHY Protocol Description GE1/2/7 up up Conexion a YMTSOMCY7750SR702 *1/1
print(data)
Interface PHY Protocol Description
GE1/2/7 up up Conexion a YMTSOMCY7750SR702 *1/1/5 (Servicio 1711 1Gbps) IP7BTO01 Gi7/0/0
GE1/2/8 up up Conexion a IP7MCY01 Gi1/0/1
GE1/2/9 up up Conexion a YMTSOMCY7750SR702 *2/1/6 (Servicio 608 1Gbps) IP7VAL01 Gi4/0/1
当我应用以下代码行来获取数据帧时:
df = pd.read_csv(io.StringIO(data), sep='\s+')
print(df)
Interface \
GE1/2/7 up up Conexion a YMTSOMCY7750SR702 1/1/5 (Servicio 1711.0
GE1/2/8 up up Conexion a IP7MCY01 Gi1/0/1 NaN NaN
GE1/2/9 up up Conexion a YMTSOMCY7750SR702 2/1/6 (Servicio 608.0
PHY \
GE1/2/7 up up Conexion a YMTSOMCY7750SR702 1/1/5 (Servicio 1Gbps)
GE1/2/8 up up Conexion a IP7MCY01 Gi1/0/1 NaN NaN
GE1/2/9 up up Conexion a YMTSOMCY7750SR702 2/1/6 (Servicio 1Gbps)
Protocol \
GE1/2/7 up up Conexion a YMTSOMCY7750SR702 1/1/5 (Servicio IP7BTO01
GE1/2/8 up up Conexion a IP7MCY01 Gi1/0/1 NaN NaN
GE1/2/9 up up Conexion a YMTSOMCY7750SR702 2/1/6 (Servicio IP7VAL01
Description
GE1/2/7 up up Conexion a YMTSOMCY7750SR702 1/1/5 (Servicio Gi7/0/0
GE1/2/8 up up Conexion a IP7MCY01 Gi1/0/1 NaN NaN
GE1/2/9 up up Conexion a YMTSOMCY7750SR702 2/1/6 (Servicio Gi4/0/1
Interface PHY Protocol \
0 EthTrunk4 *down down
1 EthTrunk8 up up
2 GE7/1/5(10G) *down down
3 GE7/1/6(10G) up up
4 GE7/1/7(10G) up up
5 GE7/1/9(10G) up up
6 GE16/1/5(10G) *down down
7 GE16/1/7(10G) up up
Description
0 LAGPED76MCY01_2/43/4PNEMCY01_7/1/516/1/5
1 LAGPNE5MCY01_GE7/1/7GE16/1/7PED77MCY03_Te3/1/3...
2 Conexion_a_PED76MCY01_2/43/4PNEMCY01_7/1/516/1...
3 Conexion_a_PED76MCY01_Te0/8/0/0_
4 Conexion_a_LAGPNE5MCY01_GE7/1/9PED77MCY03_Te3/...
5 Conexion_a_YMTSOMCY7750SR1201_3/2/1_(Servicio_...
6 Conexion_a_PED76MCY01_2/43/4PNEMCY01_7/1/516/1...
7 Conexion_a_LAGPNE5MCY01_GE7/1/9PED77MCY03_Te8/...
我正在尝试用正则表达式组装分隔符(sep),但是正则表达式的问题对我来说仍然很难理解,正如您可以看到的那样,使用表达式\s+作为分隔符,但是在我的上一篇专栏文章中,我没有得到我想要的
更新:除了friend@Grateate Odoo提供的解决方案外,我还得到了另一个可能更简单的解决方案,基本上是基于在将数据转换为数据帧之前处理数据,因此我所做的是将字符串传递到列表中,将描述列中的字符串中的空格转换为下划线(_),然后再次将其转换为字符串,现在可以在我的数据帧中使用“\s+”分隔符
data=list(data) # Transformo mi data(de tipo string) en una lista para su manipulacion
# print(data)
count1=(len(data)) # Cuento el total de elemento que tiene mi lista
print(data[47]) # Variable que me desmuestra que desde exite 47 caracteres desde el inicio de mi cadena hasta el incio de la ultima "columna"
while i < count1:
if z >= 47 and data[ind] !='\n' :
if data[ind]==' ':
data[ind]='_'
elif data[ind]=='\n':
z=-1
i+=1
ind+=1
z+=1
# print(z)
data=''.join(data)
# print(data)
df = pd.read_csv(io.StringIO(data),sep='\s+')
df=df.rename(columns = {'Description_____________________':'Description'})
print(df)
当您使用
sep='\s'
时,第二行表示它包含12列
# take a look at this
print(len(re.split('\s+', "GE1/2/7 up up Conexion a YMTSOMCY7750SR702 *1/1/5 (Servicio 1711 1Gbps) IP7BTO01 Gi7/0/0")))
如果您的所有列被多个空格分隔,只需在标题中修改大小写即可
并使用sep=(\s\s+)
:
输出:
Interface PHY Protocol Description
0 GE1/2/7 up up Conexion a YMTSOMCY7750SR702 *1/1/5 (Servicio ...
1 GE1/2/8 up up Conexion a IP7MCY01 Gi1/0/1
2 GE1/2/9 up up Conexion a YMTSOMCY7750SR702 *2/1/6 (Servicio ...
例如,如果这不起作用,您需要将数据修复为有效的专用csv格式
对于您的演示数据:
输出:
0 GE1/2/7
1 GE1/2/8
2 GE1/2/9
名称:接口,数据类型:对象
当您使用sep='\s'
时,第二行表示它包含12列:
# take a look at this
print(len(re.split('\s+', "GE1/2/7 up up Conexion a YMTSOMCY7750SR702 *1/1/5 (Servicio 1711 1Gbps) IP7BTO01 Gi7/0/0")))
如果您的所有列被多个空格分隔,只需在标题中修改大小写即可
并使用sep=(\s\s+)
:
输出:
Interface PHY Protocol Description
0 GE1/2/7 up up Conexion a YMTSOMCY7750SR702 *1/1/5 (Servicio ...
1 GE1/2/8 up up Conexion a IP7MCY01 Gi1/0/1
2 GE1/2/9 up up Conexion a YMTSOMCY7750SR702 *2/1/6 (Servicio ...
例如,如果这不起作用,您需要将数据修复为有效的专用csv格式
对于您的演示数据:
输出:
0 GE1/2/7
1 GE1/2/8
2 GE1/2/9
名称:接口,数据类型:对象
我找到了另一个解决方案,但我将尝试这个看起来非常优化的解决方案。谢谢我有另一个解决方案,但我会尝试这个看起来非常优化的方案。非常感谢。