Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.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 3.x - Fatal编程技术网

在python中从列表的每个元素中删除文本

在python中从列表的每个元素中删除文本,python,python-3.x,Python,Python 3.x,我有一个包含字符串的列表,比如['\t30/30','\t10/10'],因为我在一些原始输入数据中使用了正则表达式,这些数据来自一个名为grades的字符串 number = re.findall(r'\t\d{1,3}\/\d{1,3}',grades) number[:] = [item.replace('\t', '') for item in number] 如何删除列表“编号”中每个元素中的\t? 第二行给了我一个错误: AttributeError: 'list' object

我有一个包含字符串的列表,比如
['\t30/30','\t10/10']
,因为我在一些原始输入数据中使用了正则表达式,这些数据来自一个名为grades的字符串

number = re.findall(r'\t\d{1,3}\/\d{1,3}',grades)
number[:] = [item.replace('\t', '') for item in number]
如何删除列表“编号”中每个元素中的\t? 第二行给了我一个错误:

AttributeError: 'list' object has no attribute 'replace'
您可以尝试以下方法:

import re
number = re.findall(r'\t\d{1,3}\/\d{1,3}',grades)
final_data = [re.findall('[^\t]+', i)[0] for i in number]
使用
number=['\t30/30','\t10/10']
运行此代码时,输出为:

['30/30', '10/10']

我实际上无法再现你的问题。确保
number
是您所认为的。它似乎是一个列表的列表

>>> grades = "bla bla \t23/40 foo bar bla \t12/20"
>>> number = re.findall(r'\t\d{1,3}\/\d{1,3}',grades)
>>> [item.replace("\t", "") for item in number]
['23/40', '12/20']
或者,您可以使用
str.strip
将其缩短一点:

>>> [item.strip() for item in number]
['23/40', '12/20']
但是,我建议您在正则表达式中使用捕获组,这样
\t
甚至不是结果的一部分:

>>> re.findall(r'\t(\d{1,3}\/\d{1,3})',grades)
['23/40', '12/20']
或者对每个数字使用一个组,这样以后就不必拆分:

>>> re.findall(r'\t(\d{1,3})\/(\d{1,3})',grades)
[('23', '40'), ('12', '20')]

@Miraj50而不是
lambda x:x.strip()
,你只需通过
str.strip
@tobias\k我发誓再也不会犯这个错误(这是我的第二次!)<代码>列表(映射(str.strip,number))=>
['30/30','10/10']
我一直在等待有人建议指定一个捕获组:)
>>> re.findall(r'\t(\d{1,3})\/(\d{1,3})',grades)
[('23', '40'), ('12', '20')]