将包含已用引号括起来并用换行符分隔的字符串的文本语料库转换为单个列表中的单个字符串



所以一个朋友认为,把一长串单独的单词放在用换行符分隔的引号中会很有帮助。我最终需要这些都是放入列表中的单个字符串,并且没有换行符。

蟒蛇新手,所以也许我缺少一些容易的东西??

我尝试过使用 splitlines((,但它在多行字符串中效果不佳。当我不使用多行字符串时,我不知道有什么方法可以将我所有的单词放在一行上,这是开始的问题。

food = '''
'apple'
'hot cakes'
'hot dogs'
'pie'
'watermelon'
'''
print(food.splitlines())

上面的代码实际上给了我:

['', "'apple'", "'hot cakes'", "'hot dogs'", "'pie'", "'watermelon'"]

但我希望它给我的是:

['apple', 'hot cakes', 'hot dogs'...]

使用 replace 去掉引号,用 splitlines 去掉第一行元素(空字符串(:

print(food.replace("'",'').splitlines()[1:])

输出:

['apple', 'hot cakes', 'hot dogs', 'pie', 'watermelon']

你总体上与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("'", '')用空字符串替换多余的单引号。

你可以使用 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']

很简单!

print([x.strip("'") for x in food.splitlines() if x])

在列表理解中使用 strip((

最新更新