将已经用引号引起来并用换行符分隔的字符串的文本语料转换成单个列表中的单个字符串?

时间:2019-04-04 04:21:07

标签: python string list quotes

因此,一位朋友认为,将一长串的单个单词放入以换行符分隔的引号中,对他们会很有帮助。我最终需要将它们全部放入列表中,并且没有换行符。

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'...]

4 个答案:

答案 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()