如何在Python中返回整个字符串并从中提取列?
例如,从这个输出中,我需要包含单词“test1.txt”的字符串,然后我需要这个字符串中的第三列,即文件大小。 类似于Linux中的cut命令如何在Python中返回整个字符串并从中提取列?,python,regex,Python,Regex,例如,从这个输出中,我需要包含单词“test1.txt”的字符串,然后我需要这个字符串中的第三列,即文件大小。 类似于Linux中的cut命令 5636335 -rw- 1922 Apr 20 2019 09:22:47 +00:00 private-config.cfg 5636332 -rw- 1136 Apr 20 2019 09:22:47 +00:00 NETMAP 5636336 -rw- 0 Apr 20 2019 1
5636335 -rw- 1922 Apr 20 2019 09:22:47 +00:00 private-config.cfg
5636332 -rw- 1136 Apr 20 2019 09:22:47 +00:00 NETMAP
5636336 -rw- 0 Apr 20 2019 13:14:51 +00:00 test1.txt
5636325 -rw- 1691 Apr 20 2019 09:22:47 +00:00 startup-config.cfg
5636333 -rw- 16384 Apr 20 2019 09:22:47 +00:00 nvram_00001
5636330 -rw- 341 Apr 20 2019 09:22:47 +00:00 ubridge.log
NETMIKO module
net_connect = ConnectHandler(**cisco)
output = net_connect.send_command('dir')
x = re.search('test1.txt', output)
print(x)
<re.Match object; span=(215, 224), match='test1.txt'>
您可以使用:
tr -s ' ' <test1.txt | cut -d ' ' -f3
我知道如何在Linux中实现,我需要Python帮助 你可以切片[13:25]和剥皮 列之间有许多空格,因此正常拆分“”将创建太多空列,它可能无法工作,但re.split\s+可以完成此操作
output = '''5636335 -rw- 1922 Apr 20 2019 09:22:47 +00:00 private-config.cfg
5636332 -rw- 1136 Apr 20 2019 09:22:47 +00:00 NETMAP
5636336 -rw- 0 Apr 20 2019 13:14:51 +00:00 test1.txt
5636325 -rw- 1691 Apr 20 2019 09:22:47 +00:00 startup-config.cfg
5636333 -rw- 16384 Apr 20 2019 09:22:47 +00:00 nvram_00001
5636330 -rw- 341 Apr 20 2019 09:22:47 +00:00 ubridge.log'''
import re
for row in output.split('\n'):
if 'test1.txt' in row:
print(re.split('\s+', row)[2])
显示到目前为止您已尝试的内容。请使用row.split“[2]获取行中的元素。或者您可以使用数字介于第13和第25个字符行[13:25]之间的事实
ts -s | squeeze-repeats
cut -d | delimiter
cut -f | field
import re
sizes = [re.split(r"\s+", l)[2] for l in open("test1.txt").readlines()]
# ['1922', '1136', '0', '1691', '16384', '341']
output = '''5636335 -rw- 1922 Apr 20 2019 09:22:47 +00:00 private-config.cfg
5636332 -rw- 1136 Apr 20 2019 09:22:47 +00:00 NETMAP
5636336 -rw- 0 Apr 20 2019 13:14:51 +00:00 test1.txt
5636325 -rw- 1691 Apr 20 2019 09:22:47 +00:00 startup-config.cfg
5636333 -rw- 16384 Apr 20 2019 09:22:47 +00:00 nvram_00001
5636330 -rw- 341 Apr 20 2019 09:22:47 +00:00 ubridge.log'''
for row in output.split('\n'):
if 'test1.txt' in row:
print(row[13:25].strip())
output = '''5636335 -rw- 1922 Apr 20 2019 09:22:47 +00:00 private-config.cfg
5636332 -rw- 1136 Apr 20 2019 09:22:47 +00:00 NETMAP
5636336 -rw- 0 Apr 20 2019 13:14:51 +00:00 test1.txt
5636325 -rw- 1691 Apr 20 2019 09:22:47 +00:00 startup-config.cfg
5636333 -rw- 16384 Apr 20 2019 09:22:47 +00:00 nvram_00001
5636330 -rw- 341 Apr 20 2019 09:22:47 +00:00 ubridge.log'''
import re
for row in output.split('\n'):
if 'test1.txt' in row:
print(re.split('\s+', row)[2])