Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中列表列表中的字符串操作_Python_Python 2.7 - Fatal编程技术网

Python中列表列表中的字符串操作

Python中列表列表中的字符串操作,python,python-2.7,Python,Python 2.7,我有一个包含数百个子列表的列表。该列表来自数据库表,子列表是该表的行,因此子列表都具有相同数量的条目,并且条目的格式与相应子列表中的相同。以下是一个例子: persons = [['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21-0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9/30-6', 'Green']] ...etc 如何编辑所有第5个字段以删除任何“-”和“/”符号 删除不

我有一个包含数百个子列表的列表。该列表来自数据库表,子列表是该表的行,因此子列表都具有相同数量的条目,并且条目的格式与相应子列表中的相同。以下是一个例子:

persons = [['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21-0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9/30-6', 'Green']] ...etc
如何编辑所有第5个字段以删除任何“-”和“/”符号


删除不需要的标志后,我如何创建一个包含所有人员信息的新列表,其中1)第5个字段最后一个数字是4,2)第6个字段颜色是“蓝色”?

要删除
-
/
,可以执行以下操作:

persons = [['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21-0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9/30-6', 'Green']]

for i in persons:
    i[4] = i[4].replace('-','').replace('/','')

print persons

[OUTPUT]
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '210049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9306', 'Green']]
b = [x for x in persons if x[4][-2] == '4' and x[5]=='Blue']
对于第二个问题,您可以:

persons = [['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21-0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9/30-6', 'Green']]

for i in persons:
    i[4] = i[4].replace('-','').replace('/','')

print persons

[OUTPUT]
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '210049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9306', 'Green']]
b = [x for x in persons if x[4][-2] == '4' and x[5]=='Blue']
简单:

for i in range(len(persons)):
    persons[i][4] = persons[i][4].replace('-', '').replace('/', '')

然后


答案是列表理解

persons = [p[:4]+[p[4].replace('-','').replace('/',''),p[5]] for p in persons]
p4 = [p for p in persons if p[4][-2]=='4']
pblue = [p for p in persons if p[5]=='Blue']

考虑以下几点:

persons = [
    ['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21-0049', 'Green'],
    ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9/30-6', 'Green'],
]

clean1 = [[aa, bb, cc, dd, ee.replace('/','').replace('-',''), ff] for [aa, bb, cc, dd, ee, ff] in persons]

def clean(ins):
    outs = ins
    outs = outs.replace('/', '')
    outs = outs.replace('-', '')
    return outs

clean2 = [[aa, bb, cc, dd, clean(ee), ff] for [aa, bb, cc, dd, ee, ff] in persons]

print clean1
print clean2

def modify1(s):
    e = list(s)
    e[-2] = '4'
    return ''.join(e)

modified1 = [[aa, bb, cc, dd, modify1(ee), 'Blue'] for [aa, bb, cc, dd, ee, ff] in clean1]

def modify2(s):
    return s[:-2] + '4' + s[-1]

modified2 = [[aa, bb, cc, dd, modify2(ee), 'Blue'] for [aa, bb, cc, dd, ee, ff] in clean1]

print modified1
print modified2
输出:

# persons
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21-0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9/30-6', 'Green']]

# clean
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21 0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9 30 6', 'Green']]
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21 0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9 30 6', 'Green']]

# modified
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21 0049', 'Blue'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9 3046', 'Blue']]
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21 0049', 'Blue'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9 3046', 'Blue']]

所有的方法都是简单的列表理解,根据您的具体要求考虑不同的选项。

# persons
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21-0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9/30-6', 'Green']]

# clean
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21 0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9 30 6', 'Green']]
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21 0049', 'Green'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9 30 6', 'Green']]

# modified
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21 0049', 'Blue'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9 3046', 'Blue']]
[['2014-2-20', 'Ivan', 'Jones', 'Moscow', '21 0049', 'Blue'], ['2014-1-12', 'Mike', 'Dyson', 'Glasgow', '9 3046', 'Blue']]