Python将字符串转换为列表,然后再转换一些

Python将字符串转换为列表,然后再转换一些,python,string,dictionary,string-formatting,Python,String,Dictionary,String Formatting,基本上,我试图做的是获取一个输入(见下文),并将格式转换为以下输出(见下文)。输出为字典列表。我一直在使用.split()和.strip(),但在将IP地址与房间号分开时仍然存在问题。(见下面我的代码) 输入: "bromine ";" 00:23:AE:90:FA:C6 ";" 144.38.198.130";151 #(this is just one line in the file, there are several lines with this exact format) 输出:

基本上,我试图做的是获取一个输入(见下文),并将格式转换为以下输出(见下文)。输出为字典列表。我一直在使用.split()和.strip(),但在将IP地址与房间号分开时仍然存在问题。(见下面我的代码)

输入:

"bromine ";" 00:23:AE:90:FA:C6 ";" 144.38.198.130";151 #(this is just one line in the file, there are several lines with this exact format)
输出:

[{'ip': '144.38.198.130', 'mac': '00:23:AE:90:FA:C6', 'name': 'bromine', 'room': '151'}] #(again this would be just one of the lines)
我的代码:

import sys

my_list = []
file = sys.stdin
for line in file:
   # d = {}
    line = line.strip('"')
    line = line.split()

    name = line[0]
    macAddress = line[2]
    ipAddress = line[4]
    #roomNum = [?]

    d={'ip': ipAddress, 'mac': macAddress, 'name': name, 'room': None}
    my_list.append(d)
    #print line

print d
这是我得到的输出: {'ip':'144.38.196.157;119','mac':'00:23:AE:90:FB:5B','name':'tellurium','room':None}

关闭但没有雪茄,尝试分离119

尝试:

line.replace(';',' ').split()

这将用空格替换分号,然后进行拆分。提供的链接将为在多个分隔符上拆分提供更通用的解决方案。

尝试:

line.replace(';',' ').split()

这将用空格替换分号,然后进行拆分。提供的链接将为在多个分隔符上拆分提供更通用的解决方案。

尝试:

line.replace(';',' ').split()

这将用空格替换分号,然后进行拆分。提供的链接将为在多个分隔符上拆分提供更通用的解决方案。

尝试:

line.replace(';',' ').split()


这将用空格代替分号,然后拆分。提供的链接将提供一个更通用的解决方案,用于在多个分隔符上拆分。

下面的列表理解从
行中删除双引号,然后在分号上拆分,然后从行中的每个字段中去掉前导和尾随空格。然后提取字段使用元组赋值将s转换为命名变量

!/usr/bin/env python
行=“‘溴’;“00:23:AE:90:FA:C6”;“144.38.198.130”;151”
打印行
line=[s.strip()表示第行中的s.replace(“,”).split(“;”)]
打印行
名称,macAddress,ipAddress,roomNum=行
d={'ip':ipAddress,'mac':macAddress,'name':name,'room':roomNum}
打印d
输出

"bromine ";" 00:23:AE:90:FA:C6 ";" 144.38.198.130";151
['bromine', '00:23:AE:90:FA:C6', '144.38.198.130', '151']
{'ip': '144.38.198.130', 'mac': '00:23:AE:90:FA:C6', 'name': 'bromine', 'room': '151'}


我应该提到的是,来自文件中的
行的每一行:
将以换行符结尾;“我的代码”使用列表中的
s.strip()
,将其与其他空白一起删除。未能从文本文件输入行中删除换行符可能会导致神秘和/或恼人的行为…

下面的列表理解从
行中删除双引号,然后在分号上拆分,然后从行中的每个字段中删除前导和尾随空格。然后使用元组赋值将字段提取到命名变量

#/usr/bin/env python
第行='“溴”;“00:23:AE:90:FA:C6”;" 144.38.198.130";151'
打印行
line=[s.strip()表示第行中的s.replace(“,”).split(“;”)]
打印行
名称,macAddress,ipAddress,roomNum=行
d={'ip':ipAddress,'mac':macAddress,'name':name,'room':roomNum}
打印d
输出

"bromine ";" 00:23:AE:90:FA:C6 ";" 144.38.198.130";151
['bromine', '00:23:AE:90:FA:C6', '144.38.198.130', '151']
{'ip': '144.38.198.130', 'mac': '00:23:AE:90:FA:C6', 'name': 'bromine', 'room': '151'}


我应该提到的是,文件中的
行的每一行:
都将以换行符结尾;我的代码使用
s.strip()删除了这一行以及其他空格
在列表理解中。未能从文本文件输入行中删除换行符可能会导致神秘和/或恼人的行为…

下面的列表理解从
行中删除双引号,然后在分号上拆分,然后从行中的每个字段中删除前导和尾随空格。然后提取字段to使用元组赋值的命名变量

!/usr/bin/env python
行=“‘溴’;“00:23:AE:90:FA:C6”;“144.38.198.130”;151”
打印行
line=[s.strip()表示第行中的s.replace(“,”).split(“;”)]
打印行
名称,macAddress,ipAddress,roomNum=行
d={'ip':ipAddress,'mac':macAddress,'name':name,'room':roomNum}
打印d
输出

"bromine ";" 00:23:AE:90:FA:C6 ";" 144.38.198.130";151
['bromine', '00:23:AE:90:FA:C6', '144.38.198.130', '151']
{'ip': '144.38.198.130', 'mac': '00:23:AE:90:FA:C6', 'name': 'bromine', 'room': '151'}


我应该提到的是,来自文件中的
行的每一行:
将以换行符结尾;“我的代码”使用列表中的
s.strip()
,将其与其他空白一起删除。未能从文本文件输入行中删除换行符可能会导致神秘和/或恼人的行为…

下面的列表理解从
行中删除双引号,然后在分号上拆分,然后从行中的每个字段中删除前导和尾随空格。然后使用元组赋值将字段提取到命名变量

#/usr/bin/env python
第行='“溴”;“00:23:AE:90:FA:C6”;" 144.38.198.130";151'
打印行
line=[s.strip()表示第行中的s.replace(“,”).split(“;”)]
打印行
名称,macAddress,ipAddress,roomNum=行
d={'ip':ipAddress,'mac':macAddress,'name':name,'room':roomNum}
打印d
输出

"bromine ";" 00:23:AE:90:FA:C6 ";" 144.38.198.130";151
['bromine', '00:23:AE:90:FA:C6', '144.38.198.130', '151']
{'ip': '144.38.198.130', 'mac': '00:23:AE:90:FA:C6', 'name': 'bromine', 'room': '151'}


我应该提到的是,文件中的
行的每一行:
都将以换行符结尾;我的代码使用
s.strip()删除了这一行以及其他空格
在列表理解中。未能从文本文件输入行中删除换行符可能会导致神秘和/或恼人的行为…

使用replace/strip提取:

import sys

my_list = []
f = sys.stdin

for line in f:
    line = line.split('";')
    result = dict(
                  zip(["name", "mac", "ip", "room"],
                  [field.replace('"', "").strip() for field in line]))
    my_list.append(result)

print my_list
使用正则表达式进行提取:

import sys
import re

my_list = []
f = sys.stdin

pattern = r'"(\w*)\W*([\w:]*)\W*([\w\.]*)";(\w*)'
for line in f:
    result = dict(
        zip(["name", "mac", "ip", "room"],
            re.match(pattern, line).groups()))
    my_list.append(result)

print my_list
输出:

[{'ip': '144.38.198.130', 'mac': '00:23:AE:90:FA:C6', 'name': 'bromine', 'room': '151'},
{'ip': '144.38.196.157', 'mac': '00:23:AE:90:FB:5B', 'name': 'tellurium', 'room': '119'}]

使用替换/剥离进行提取:

import sys

my_list = []
f = sys.stdin

for line in f:
    line = line.split('";')
    result = dict(
                  zip(["name", "mac", "ip", "room"],
                  [field.replace('"', "").strip() for field in line]))
    my_list.append(result)

print my_list
使用正则表达式进行提取:

import sys
import re

my_list = []
f = sys.stdin

pattern = r'"(\w*)\W*([\w:]*)\W*([\w\.]*)";(\w*)'
for line in f:
    result = dict(
        zip(["name", "mac", "ip", "room"],
            re.match(pattern, line).groups()))
    my_list.append(result)

print my_list
输出:

[{'ip': '144.38.198.130', 'mac': '00:23:AE:90:FA:C6', 'name': 'bromine', 'room': '151'},
{'ip': '144.38.196.157', 'mac': '00:23:AE:90:FB:5B', 'name': 'tellurium', 'room': '119'}]

使用替换/剥离进行提取:

import sys

my_list = []
f = sys.stdin

for line in f:
    line = line.split('";')
    result = dict(
                  zip(["name", "mac", "ip", "room"],
                  [field.replace('"', "").strip() for field in line]))
    my_list.append(result)

print my_list
使用正则表达式进行提取:

import sys
import re

my_list = []
f = sys.stdin

pattern = r'"(\w*)\W*([\w:]*)\W*([\w\.]*)";(\w*)'
for line in f:
    result = dict(
        zip(["name", "mac", "ip", "room"],
            re.match(pattern, line).groups()))
    my_list.append(result)

print my_list
输出:

[{'ip': '144.38.198.130', 'mac': '00:23:AE:90:FA:C6', 'name': 'bromine', 'room': '151'},
{'ip': '144.38.196.157', 'mac': '00:23:AE:90:FB:5B', 'name': 'tellurium', 'room': '119'}]

使用替换/剥离进行提取:

import sys

my_list = []
f = sys.stdin

for line in f:
    line = line.split('";')
    result = dict(
                  zip(["name", "mac", "ip", "room"],
                  [field.replace('"', "").strip() for field in line]))
    my_list.append(result)

print my_list
使用正则表达式进行提取:

import sys
import re

my_list = []
f = sys.stdin

pattern = r'"(\w*)\W*([\w:]*)\W*([\w\.]*)";(\w*)'
for line in f:
    result = dict(
        zip(["name", "mac", "ip", "room"],
            re.match(pattern, line).groups()))
    my_list.append(result)

print my_list
输出:

[{'ip': '144.38.198.130', 'mac': '00:23:AE:90:FA:C6', 'name': 'bromine', 'room': '151'},
{'ip': '144.38.196.157', 'mac': '00:23:AE:90:FB:5B', 'name': 'tellurium', 'room': '119'}]

要删除前面有一个分号的
119
,只需用分号拆分

line.split(';')

在代码中:

import sys

my_list = []
file = sys.stdin
for line in file:
   # d = {}
    line = line.strip('"')
    line = line.split()[0]
    name = line.split(';')[0]

    macAddress = line[2]
    ipAddress = line[4]
    #roomNum = [?]

    d={'ip': ipAddress, 'mac': macAddress, 'name': name, 'room': None}
    my_list.append(d)
    #print line

print d

要删除前面有一个分号的
119
,只需用分号拆分

line.split(';')

在代码中:

import sys

my_list = []
file = sys.stdin
for line in file:
   # d = {}
    line = line.strip('"')
    line = line.split()[0]
    name = line.split(';')[0]

    macAddress = line[2]
    ipAddress = line[4]
    #roomNum = [?]

    d={'ip': ipAddress, 'mac': macAddress, 'name': name, 'room': None}
    my_list.append(d)
    #print line

print d

要删除前面有一个分号的
119
,只需用分号拆分

line.split(';')

在代码中:

import sys

my_list = []
file = sys.stdin
for line in file:
   # d = {}
    line = line.strip('"')
    line = line.split()[0]
    name = line.split(';')[0]

    macAddress = line[2]
    ipAddress = line[4]
    #roomNum = [?]

    d={'ip': ipAddress, 'mac': macAddress, 'name': name, 'room': None}
    my_list.append(d)
    #print line

print d

要删除前面有一个分号的
119
,只需用分号拆分

line.split(';')

在代码中:

import sys

my_list = []
file = sys.stdin
for line in file:
   # d = {}
    line = line.strip('"')
    line = line.split()[0]
    name = line.split(';')[0]

    macAddress = line[2]
    ipAddress = line[4]
    #roomNum = [?]

    d={'ip': ipAddress, 'mac': macAddress, 'name': name, 'room': None}
    my_list.append(d)
    #print line

print d

将值存储在变量中之后

import re
input = '"a";"b";"c";"d"'
keys = ['x','y','z','w']
inputlist = input.split(';')
for x in range(0, len(inputlist)):
    inputlist[x] = re.sub(r'"','',inputlist [x])
output = dict(zip(keys,inputlist))

将值存储在变量中之后