Разделение строк в списке строк с помощью разделителя - PullRequest
0 голосов
/ 03 октября 2019

У меня есть список Химических реакций, и я хочу разделить эти реакции, используя разделитель, чтобы я получил виды, участвующие в реакции. Есть ли выход из этого? Например:

H2 + O2 = 2H2O
Na2 + Cl2 = NaCl
Ag + Cl2 =  AgCl

Я хочу разделить приведенный выше список реакций таким образом, чтобы я в итоге получил список, имеющий следующий [['H2', 'O2', '2H2O'],['Na2','Cl2','NaCl'],['Ag','Cl2','AgCl']]

Ответы [ 3 ]

1 голос
/ 03 октября 2019

Вы можете сделать это с помощью re.split(), разделив строку на один или несколько несловарных символов :

>>> import re
>>> re.split(r'\W+', 'H2 + O2 = 2H2O')
['H2', 'O2', '2H2O']

В качестве альтернативы, вы можете использоватьre.findall(), чтобы найти все «слова»:

>>> re.findall(r'\w+', 'H2 + O2 = 2H2O')
['H2', 'O2', '2H2O']

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

>>> re.findall(r'\b\d*(\w+)', 'H2 + O2 = 2H2O')
['H2', 'O2', 'H2O']
0 голосов
/ 03 октября 2019

Str.split не может этого сделать, поэтому вы можете разделить строку следующим образом:

Первый использует re:

import re

re.split("+|=", "H2 + O2 = 2H2O")

Второй разделен вручную:

mendeleev = []
cur = ""
for char in "H2 + O2 = 2H2O":
    if char in "+=":
        mendeleev.append(cur)
        cur = ""
    else:
        cur += char

Помните, что вы должны удалить () элементы списка (или сначала выполнить str.replace ("", "")).

0 голосов
/ 03 октября 2019
import re
s = "H2 + O2 = 2H2O"
print (re.split("\W+", s))

# re.split takes a regular expression on which you can split the string.
# \W represents non-word character. For ASCII, word characters are [a-zA-Z0-9_]
# + represents one or more occurrences.

В вашем примере строка была разделена на ' + ' и ' = '

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