преобразовать корпус текста со строками, уже обернутыми в кавычки и разделенными переносами строк, в отдельные строки в одном списке? - PullRequest
0 голосов
/ 04 апреля 2019

Итак, друг подумал, что они будут очень полезны, если поместить длинный список отдельных слов в кавычки, разделенные переносами строк.В конечном итоге мне нужно, чтобы все они были отдельными строками в списке и без разрывов строк.

Впервые в 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 голосов
/ 04 апреля 2019

Simple!

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

Использовать strip () внутри списка

0 голосов
/ 04 апреля 2019

Вы можете использовать понимание списка 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']
0 голосов
/ 04 апреля 2019

Вы довольно близки с 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("'", '') заменяет дополнительные одинарные кавычки пустой строкой.

0 голосов
/ 04 апреля 2019

Используйте replace, чтобы избавиться от кавычек, используйте splitlines и избавьтесь от первого элемента строки (пустая строка):

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

Выход:

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