从列表中的字符串项中删除一个 substr

Remove a substr from string items in a list

list = [ 'u'adc', 'u'toto', 'u'tomato', ...]

我想要的是这样的列表: list2 = [ 'adc', 'toto', 'tomato'... ]

你能告诉我如何在不使用正则表达式的情况下做到这一点吗? 我正在尝试:

for item in list:
            list.extend(str(item).replace("u'",''))
            list.remove(item)

但这最终给出了某种形式的东西 ['a', 'd', 'd', 'm'...]

在列表中我可能有任意数量的字符串。

您可以像这样将其编码为 "utf-8":

list_a=[ u'adc', u'toto', u'tomato']
list_b=list()
for i in list_a:
    list_b.append(i.encode("utf-8"))
list_b

输出:

['adc', 'toto', 'tomato']

或者你可以使用str函数:

list_c = list()
for i in list_a:
    list_c.append(str(i))
list_c

输出:

['adc', 'toto', 'tomato']

使用"u\'"

例如:

l = [ "u'adc", "u'toto", "u'tomato"]
for item in l:
    print(item.replace("u\'", ""))

将输出:

adc
toto
tomato

我验证了你的问题,但它说语法问题,这意味着你在列表中声明字符串的方式不正确。在这种情况下,我已在第 2 行更正了这一点。

In [1]: list = [ 'u'adc', 'u'toto', 'u'tomato']
  File "<ipython-input-1-2c6e581e868e>", line 1
    list = [ 'u'adc', 'u'toto', 'u'tomato']
                  ^
SyntaxError: invalid syntax


In [2]: list = [ u'adc', u'toto', u'tomato']

In [3]: list = [ str(item) for item in list ]

In [4]: list
Out[4]: ['adc', 'toto', 'tomato']

In [5]: 

试试这个:

for item in list:
    for x in range(0, len(item)):
        if item[x] == 'u':
            item[x] = ''

这将获取列表中的所有实例,并检查字符串 'u'。如果找到 'u',代码会将其替换为空字符串,实际上是将其删除。更多代码可以允许它检查字母组合('abc',等等)。

解法一

input_list = [ u'adc', u'toto', u'tomato']
output_list=map(lambda x:str(x),input_list )
print output_list

输出如下:

 ['adc', 'toto', 'tomato']

解法-2

input_list = [ u'adc', u'toto', u'tomato']
output_list=map(lambda x:x.encode("utf-8"),input_list )
print output_list

输出如下:

 ['adc', 'toto', 'tomato']

您的输入不过是一个json!您转储列表中的每个项目(这是一个 json!)以获得所需的输出!

由于您的输出带有引号 - 您需要去除(开头和结尾)它们!

import json
list = [ u'adc', u'toto', u'tomato']
print [json.dumps(i).strip('\"') for i in list]

输出:

['adc', 'toto', 'tomato']

希望对您有所帮助!