나는 구성 파일 세트가 있습니다. 이를 위해 나는 다음을 수행한다 :분할 ":"다음과 같이 여러 라인은
문제는 처음에는 ''(공백)를 사용하여 2 대신 3 개의 요소로 이루어진 테이블을 얻는 것이다. findall
["Name","description of product"]
나는 구성 파일 세트가 있습니다. 이를 위해 나는 다음을 수행한다 :분할 ":"다음과 같이 여러 라인은
문제는 처음에는 ''(공백)를 사용하여 2 대신 3 개의 요소로 이루어진 테이블을 얻는 것이다. findall
["Name","description of product"]
예를 간략하게 설명해 드리겠습니다. 정규 표현식 대신에 파이프로 분할하면 어떨까요?
>>> "|a|b".split('|')
['', 'a', 'b']
문자열이 구분 기호로 시작하면 split은 반환 값에 여분의 빈 요소를 추가합니다. 이제 구분자는 정규 표현식이지만 비슷하게 문자열은 해당 표현식과 일치하는 것으로 시작하므로 반환 된 첫 번째 요소는 빈 문자열입니다. 이 문제를 해결하기 위해
, 당신은 정규식을 사용하지 않고 첫 번째 요소
div = re.split('Product:\s+|Description:\s+', contentOfFile)[1:]
당신은 split
필요하지 않습니다를 사용 : 난 그냥이 경우 싶어하기 때문에 공간이 항상 고려하면 모르는
>>> re.findall(r":\s+(.*)", a)
['Name', 'description of product']
이 솔루션을 사용하여,
SomeText: Name
BlaBlaBla: description of product
는 Name
및 description of product
을 추출 할 수 있습니다 : 당신은 당신이 그렇게 경우에도 :
전에 텍스트에 의존하지 않습니다. 문제에 대한 일반적인 해결책을 작성하고 가능한 미래 시나리오에 대해 생각하는 것이 좋습니다.
에게 분할 방법을 통해 일반 해를 건너 뛸 수 있습니다.
>>> x = """Product: Name
Description: description of product"""
>>> [i.split(':')[1].lstrip() for i in x.split('\n')]
['Name', 'description of product']
는 내가 그것을 여기로 표시 분할 기능
str1 = "Product: Name";
str2 = "Description: description of product";
print str1.lstrip('Product:, ');
print str2.lstrip('Description:, ');
의 작은 예제와 출력을 공간 .. 을 제거하는 데 도움을 알도 ... 을 대신 분할의 스트립 기능을 시도 할 수 있다고 생각 아래 ....
Name
description of product
작은 오타가 있습니다. div 대신 div – aberna
좋은 설명을했지만이 솔루션을 좋아하지 않습니다. 이것은':'앞의 텍스트에 매우 의존적인데,'[1 :] '때문에 조금 더 부정하다. – Maroun