Как очистить и разбить следующую строку? - PullRequest
1 голос
/ 21 марта 2020

В моей базе данных есть столбец, в котором хранится строка в следующем формате:

"['Action', 'Adventure', 'Comedy']"

Как извлечь жанры mov ie, чтобы я мог использовать их отдельно, после извлечения у меня должно быть следующее:

g1 = 'Action'  
g2 = 'Adventure'  
g3 = 'Comedy'

Ответы [ 5 ]

2 голосов
/ 21 марта 2020

Вы можете попробовать это. Вы можете разделить их на каждый , и удалить [] ' слова и использовать распаковку кортежей.

a="['Action', 'Adventure', 'Comedy']"

g1,g2,g3=[i.strip(" []'") for i in a.split(',')]

print(g1,g2,g3)
# Action Adventure Comedy
1 голос
/ 21 марта 2020

Попробуйте:

inputString = "['Action', 'Adventure', 'Comedy']"

# Converting string to list 
res = inputString.strip('][').split(', ') 

g1= res[0]
g2= res[1]
g3= res[2]

Существует несколько способов сделать это.

  1. Использование манипуляции со строками, как описано выше.

  2. Использование ast.literal_eval().

  3. Использование json.loads().

Вы можете посмотреть все примеры здесь: https://www.geeksforgeeks.org/python-convert-a-string-representation-of-list-into-list/

1 голос
/ 21 марта 2020

Если вам нравится регулярное выражение:

import re
g = "['Action', 'Adventure', 'Comedy']"
g1,g2,g3 = re.findall(r"'(\w+)'",g)
print(g1,g2,g3)
0 голосов
/ 21 марта 2020

Попробуйте этот код, используя регулярное выражение:

import re
g = "['Action', 'Adventure', 'Comedy']"
[g1, g2, g3] = " ".join(re.findall("[a-zA-Z]+", g)).split(" ")
0 голосов
/ 21 марта 2020

С небольшим искажением вы можете использовать json:

import json

src = "['Action', 'Adventure', 'Comedy']"
src = src.replace("'",'"')

g = json.loads(src)
g1,g2,g3 = g

print(g1,g2,g3)

Выход:

Action Adventure Comedy
...