因此,一位朋友认为,将一长串的单个单词放入以换行符分隔的引号中,对他们会很有帮助。我最终需要将它们全部放入列表中,并且没有换行符。
Python的新手,所以也许我缺少一些简单的东西?
我尝试过使用splitlines(),但是它不能与多行字符串配合使用。而且,当我不使用多行字符串时,我也不知道将所有单词都放在一行上的方法,这就是开始的问题。
food = '''
'apple'
'hot cakes'
'hot dogs'
'pie'
'watermelon'
'''
print(food.splitlines())
上面的代码实际上给我的是:
['', "'apple'", "'hot cakes'", "'hot dogs'", "'pie'", "'watermelon'"]
但是我想给我的是:
['apple', 'hot cakes', 'hot dogs'...]
答案 0 :(得分:0)
使用replace
删除引号,使用splitlines
删除第一行元素(空字符串):
print(food.replace("'",'').splitlines()[1:])
输出:
['apple', 'hot cakes', 'hot dogs', 'pie', 'watermelon']
答案 1 :(得分:0)
您可以按如下方式使用python列表理解:
>>> food = '''
... 'apple'
... 'hot cakes'
... 'hot dogs'
... 'pie'
... 'watermelon'
... '''
>>> [x.replace("'", '') for x in food.splitlines() if x]
['apple', 'hot cakes', 'hot dogs', 'pie', 'watermelon']
答案 2 :(得分:0)
总体来说,您与splitlines()
非常接近。 splitlines()
有两个主要问题。首先是您得到空字符串,其中一行上没有单词。第二个是您仍然留下引号。下面的代码片段解决了这两个问题:
food_split = [word.replace("'", '') for word in food.splitlines() if word.strip()]
这大致相当于(但比它快得多):
food_split = []
for word in food.splitlines():
if word.strip(): # check if the word is empty
food_split.append(word.replace("'", '')) # replace quotes with empty string
if word.strip()
确保忽略任何只有空格的空白行,而word.replace("'", '')
用空字符串替换多余的单引号。
答案 3 :(得分:0)
简单!
print([x.strip("'") for x in food.splitlines() if x])
在列表理解中使用strip()