#python #indexing #line
#python #индексирование #строка
Вопрос:
Я хочу извлечь строки из списка, содержащие атомы углерода (‘C’).
Фактические строки:
propene_data = ['H -0.08677109049370 0.00000005322169 0.02324774260533n', 'C -0.02236345244409 -0.00000001742911 1.09944502076327n', 'C 1.14150994274008 0.00000000299501 1.72300489107368n', 'H -0.95761218150040 -0.00000002374717 1.63257861279343n', 'H 1.17043966864771 0.00000000845005 2.80466760537188n', 'C 2.46626448549704 -0.00000000616665 1.02315746104893n', 'H 3.28540550052797 0.00000001315434 1.73628424885091n', 'H 2.55984407099540 -0.87855375749407 0.38655722260408n', 'H 2.55984405602998 0.87855372701591 0.38655719488850n']
Я попытался извлечь строку углерода, используя следующее решение;
car1 = propene_data[1].split()
car2 = propene_data[2].split()
car3 = propene_data[5].split()
propene_carbons = car1 car2 car3
Это решение дает;
propene_carbons = ['C', '-0.02236345244409', '-0.00000001742911', '1.09944502076327', 'C', '1.14150994274008', '0.00000000299501', '1.72300489107368', 'C', '2.46626448549704', '-0.00000000616665', '1.02315746104893']
Это дает то, что я хочу, но я хотел бы знать, могу ли я вместо этого индексировать (на случай, если список намного длиннее). Как мне использовать индексацию в этом случае?
Комментарии:
1. Вы хотите извлекать числа только из строк, которые начинаются с
C
?2. Да, я хочу извлекать строки, начинающиеся с ‘C’, используя индексацию, если это возможно.
Ответ №1:
Что вам нужно здесь startswith
:
result = text.startswith('C')
в цикле:
result = [i for i in propene_data if i.startswith('C')]
Вывод:
['C -0.02236345244409 -0.00000001742911 1.09944502076327n', 'C 1.14150994274008 0.00000000299501 1.72300489107368n', 'C 2.46626448549704 -0.00000000616665 1.02315746104893n']
Комментарии:
1. Я не считаю, что это правильно, потому что он не предоставляет индексированную сумму чисел, а просто добавляет их все в список.
Ответ №2:
вы можете использовать это :
propene_array=np.array([i.split() for i in propene_data])
sub_array=np.where(propene_array[:,0]=='C')[0]
propene_carbon=[]
for i in sub_array :
propene_carbon =list(propene_array[i])
вывод :
['C', '-0.02236345244409', '-0.00000001742911', '1.09944502076327', 'C',
'1.14150994274008', '0.00000000299501', '1.72300489107368', 'C',
'2.46626448549704', '-0.00000000616665', '1.02315746104893']
Комментарии:
1. спасибо за помощь, но я не собираюсь разделять все данные в строке. я должен извлечь целые строки, в которых есть углерод (‘C’).