在Python中查找和替换元素

在Python中查找和替换元素,python,list,python-3.x,Python,List,Python 3.x,我是python编程新手,想知道如何迭代下面的元素,然后替换字符串,使数据列表如下图所示。先谢谢你 [{u 'name': u 'xxx', u 'data': [ [u 'last_00_10', x], [u 'last_11_20', x], [u 'last_21_30', x], ], u 'id': x }] 替换字符串后,我希望它如下所示 [{u 'name': u 'xxx', u 'data': [ [u '0-10 Days', x],

我是python编程新手,想知道如何迭代下面的元素,然后替换字符串,使数据列表如下图所示。先谢谢你

[{u 'name': u 'xxx',
u 'data': [
    [u 'last_00_10', x],
    [u 'last_11_20', x],
    [u 'last_21_30', x],
],
u 'id': x }]
替换字符串后,我希望它如下所示

[{u 'name': u 'xxx',
u 'data': [
    [u '0-10 Days', x],
    [u '11-20 Days', x],
    [u '21-30 Days', x],
],
u 'id': x }] 

首先,你为什么要把一条口述放在一张单子上?你会在里面放其他的单词,但我会用你的结构。。 您可以这样做(我将您的列表命名为L):和x=”“来工作..(这是一个未定义的变量..)

x = ""


L = [
        {
            u'name': u'xxx',
            u'data': [
                        [u'last_00_10', x],
                        [u'last_11_20', x],
                        [u'last_21_30', x],
                    ],
            u'id': x 
        }
]

newData = [u"0-10 Days", u'11-20 Days', u'21-30 Days']
for i in range(len( L[0][u'data'] )):
    L[0][u'data'][i][0] = newData[i]
你想怎么用都行


我首先更正了代码中u'string'之间的空格,为什么要在列表中放置一个dict?您会在其中放置其他dict?但我将使用您的结构。。 您可以这样做(我将您的列表命名为L):和x=”“来工作..(这是一个未定义的变量..)

x = ""


L = [
        {
            u'name': u'xxx',
            u'data': [
                        [u'last_00_10', x],
                        [u'last_11_20', x],
                        [u'last_21_30', x],
                    ],
            u'id': x 
        }
]

newData = [u"0-10 Days", u'11-20 Days', u'21-30 Days']
for i in range(len( L[0][u'data'] )):
    L[0][u'data'][i][0] = newData[i]
你想怎么用都行


我更正了代码上u'string'之间的空格

您有一个包含字典的列表。字典中的'data'键包含一个列表。您希望迭代该列表,并用不同的文本替换列表中的第一项

x = 1
your_data = [{u'name': u'xxx',
u'data': [
    [u'last_00_10', x],
    [u'last_11_20', x],
    [u'last_21_30', x],
],
u'id': x }]

for item in your_data[0]['data']:
    item_split = item[0].split('_')
    item[0] = str(int(item_split[1])) + '-' + str(int(item_split[2])) + ' Days'

print(your_data)
这使得:

[{'id': 1, 'name': 'xxx', 'data': [['00-10 Days', 1], ['11-20 Days', 1], ['21-30 Days', 1]]}]

您有一个包含字典的列表。字典中的“data”键包含一个列表。您希望迭代该列表,并用不同的文本替换列表中的第一项

x = 1
your_data = [{u'name': u'xxx',
u'data': [
    [u'last_00_10', x],
    [u'last_11_20', x],
    [u'last_21_30', x],
],
u'id': x }]

for item in your_data[0]['data']:
    item_split = item[0].split('_')
    item[0] = str(int(item_split[1])) + '-' + str(int(item_split[2])) + ' Days'

print(your_data)
这使得:

[{'id': 1, 'name': 'xxx', 'data': [['00-10 Days', 1], ['11-20 Days', 1], ['21-30 Days', 1]]}]

这几乎可以满足您的需求:

import re

x = 42
stuff = [{u'name': u'xxx',
          u'data': [
         [u'last_00_10', x],
         [u'last_11_20', x],
         [u'last_21_30', x],
                   ],
          u'id': x }]

for row in stuff[0]['data']:
    row[0] = re.sub(r'last_(\d+)_(\d+)',
                    r'\1-\2 Days', row[0])
    print(row)
给出:

['00-10 Days', 42]
['11-20 Days', 42]
['21-30 Days', 42]
['0-10 Days', 42]
['11-20 Days', 42]
['21-30 Days', 42]
如果你想要一位数字(“00”到“0”),还有一些工作要做

def subit(m):
    f1, f2 = m.groups()[:2]
    return "%d-%d Days" % (int(f1), int(f2))

for row in stuff[0]['data']:
    row[0] = re.sub(r'last_(\d+)_(\d+)', subit, row[0])
    print(row)
给出:

['00-10 Days', 42]
['11-20 Days', 42]
['21-30 Days', 42]
['0-10 Days', 42]
['11-20 Days', 42]
['21-30 Days', 42]

这几乎可以满足您的需求:

import re

x = 42
stuff = [{u'name': u'xxx',
          u'data': [
         [u'last_00_10', x],
         [u'last_11_20', x],
         [u'last_21_30', x],
                   ],
          u'id': x }]

for row in stuff[0]['data']:
    row[0] = re.sub(r'last_(\d+)_(\d+)',
                    r'\1-\2 Days', row[0])
    print(row)
给出:

['00-10 Days', 42]
['11-20 Days', 42]
['21-30 Days', 42]
['0-10 Days', 42]
['11-20 Days', 42]
['21-30 Days', 42]
如果你想要一位数字(“00”到“0”),还有一些工作要做

def subit(m):
    f1, f2 = m.groups()[:2]
    return "%d-%d Days" % (int(f1), int(f2))

for row in stuff[0]['data']:
    row[0] = re.sub(r'last_(\d+)_(\d+)', subit, row[0])
    print(row)
给出:

['00-10 Days', 42]
['11-20 Days', 42]
['21-30 Days', 42]
['0-10 Days', 42]
['11-20 Days', 42]
['21-30 Days', 42]

每个
u
后面的空格将给出一个语法错误,如果您使用的是Python 3,则无论如何都不需要它。请显示您迄今为止所做的尝试以及您遇到的任何具体问题。在
数据
项的值中添加元素,然后从拆分中提取最后两个项-将它们转换为整数并在重构时使用它们。每个
u
后面的空格将给出一个语法错误,如果您使用的是Python 3,则无论如何都不需要它。请显示您迄今为止所做的尝试以及您遇到的任何具体问题。在
数据
项的值中添加元素,然后从拆分中提取最后两个项-将它们转换为整数并在重构时使用它们。啊!我几乎猜对了。谢谢。这就像预期的一样!这不会给小于10的值一个位数。啊!我几乎猜对了。谢谢。这就像预期的一样!这不会给小于10的值一个位数。