2017-09-02 129 views
0

删除某些文字和空间我有一个列表看起来像这样蟒蛇从字符串

['Drexel University,\r\n     Antoinette Westphal COMAD,\r\n     Animation & Visual Effects,\r\n     Undergraduate Program'] 

我想删除的大学名称,这是“德雷克塞尔大学”,而像空间\ r \ n(包括那些空白空间)在其他词前面。我想正则表达式是个好主意。但我不知道如何用正则表达式排除一些单词。

那么,我已经有了一个解决方案。但如果任何人都可以提供正则表达式版本,我会很感激。

+0

所以这是一个字符串的单个元素的列表? –

+0

可能的重复[如何使用python删除字符串中的字符?](https://stackoverflow.com/questions/3559559/how-to-delete-a-character-from-a-string-using-python) –

+0

@COLDSPEED是的,我认为字符串或列表不是主要问题。我保留列表的原因是我认为可能有一些更方便的方法来分割它。 – user8314628

回答

0

如果您打算定期对其他词做好,我想概括一下。

从你的数据:

l = ['Drexel University,\r\n     Antoinette Westphal COMAD,\r\n     Animation & Visual Effects,\r\n     Undergraduate Program'] 

指定字符串变量:

l = l[0] 

定义要忽略的密钥列表:

ignore_keys = ["Drexel University,","\n","\r"," "] 

遍历键忽略和将其替换为空白

for ignore in ignore_keys: 
    l = l.replace(ignore,"") 

然后根据您要如何表示的结果:

为列表 - l.split(",") 作为串 - l

结果:

print(l.split(",")) 
['Antoinette Westphal COMAD', 'Animation & Visual Effects', 'Undergraduate Program'] 

print(l) 
'Antoinette Westphal COMAD,Animation & Visual Effects,Undergraduate Program' 
0

可以使用.split()通过空格进行分割再切片列表如下所示:

>>> l = ['Drexel University,\r\n     Antoinette Westphal COMAD,\r\n     Animation & Visual Effects,\r\n     Undergraduate Program'] 
>>> l = l[0].split()[2:] 
>>> l 
['Antoinette', 'Westphal', 'COMAD,', 'Animation', '&', 'Visual', 'Effects,', 'Undergraduate', 'Program'] 

如果你想把它当作每个词之间有一个空格的字符串可以用l = ' '.join(l)

+0

似乎不是我想要的方式。如果你逐字分割,短语结构将被打破。我想得到一个结果如下:Antoinette Westphal COMAD,动画和视觉效果,... – user8314628

+0

哦,我明白了。让纪律成为字符串。然后l = [d.strip()for d [0] .split(',')]工作。 – user8314628

0

要把你的一个文本列表转换成字符串列表,你可以这样做:

l = ['Drexel University,\r\n     Antoinette Westphal COMAD,\r\n     Animation & Visual Effects,\r\n     Undergraduate Program'] 

text = l[0] 
lines = [line.strip().strip(',') for line in text.splitlines()] 

在这里,我提取列表的第一个项目。 然后,我将第一个项目分成几行,每行使用strip删除空格和“,”。

结果是:

['Drexel University', 'Antoinette Westphal COMAD', 
'Animation & Visual Effects', 'Undergraduate Program'] 

要删除列表中的第一个元素,你可以这样做:

lines.pop(0) 

编辑:正则表达式

使用正则表达式,你可以拆分您的文字如下:

import re 

text = l[0] 
lines = re.split(r',\s+', text) 
+0

不错,我刚刚以类似的方式得到了解决方案。 – user8314628