操作Python中的列表元素
line = "english: while french: pendant que spanish: mientras german: whrend "
words = line.split('\t')
for each in words:
each = each.rstrip()
print words
这里的'line'字符串是用制表符分开的,但每个翻译后的单词后面还多了一个空格。所以虽然用split方法可以得到我想要的单词列表,但每个单词后面都有个烦人的空格。
在循环中,我试着遍历这个列表,去掉每个字符串末尾的空格,但似乎没有效果,有什么建议吗?
3 个回答
0
你可以使用正则表达式:
import re
words = re.split(r' *\t| +$', line)[:-1]
通过这个,你可以定义可能的序列作为分隔符。它还允许有多个空格,因为使用了 * 操作符(或者根本没有空格)。
编辑:在Roger Pate指出错误后进行了修正。
1
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序里使用这些数据。这个过程就像是从一个箱子里拿东西出来,然后把它放到另一个地方。
有些时候,数据的格式可能会让我们感到困惑。比如,数据可能是以一种我们不太熟悉的方式存储的,这就像是箱子里的东西被包得很严实,我们需要先把它拆开才能看到里面的东西。
在处理这些数据时,我们可能会用到一些工具或方法来帮助我们更方便地获取和使用这些数据。就像是用工具来打开箱子,或者用手套来处理那些可能会弄脏的东西。
总之,编程中的数据处理就像是整理和使用我们周围的物品,虽然有时候会遇到一些麻烦,但只要我们掌握了方法,就能轻松应对。
words = line.split('\t')
words = [ i.rstrip() for i in words ]
1
只用 line.split()
就可以得到去掉空格的单词列表。
在循环里更新 each
并不会对 words
列表产生任何改变。
应该这样做:
for i in range(len(words)):
words[i]=words[i].rstrip()
或者:
words=map(str.rstrip,words)
查看 map 的文档,了解更多关于 map 的信息。
或者用列表推导式写成一行:
words=[x.rstrip() for x in line.split("\t")]
或者用正则表达式的 .findall:
words=re.findall("[^\t]+",line)