당신은 오히려 전체 라인을 인쇄하는 것보다 줄에서만 인용 텍스트를 추출 할 re.findall('(?:"(.*?)")', line)
을 사용할 수 있습니다 더 많은 일을보다가있는 경우에도 회선 당 발생. 코드는 다음과 같이 수정할 수 있습니다.
import re
# This will make sure citi.txt is properly closed after opening it.
# infl.read() will read the whole file as single string, so no need to loop
with open('citi.txt', 'r') as infl:
hand = infl.read()
# And look for occurences of your string
match = re.findall('(?:"(.*?)")', hand)
if match:
print match
line == 'This is "a sample" line with "two quoted" substrings'
경우,이 코드는 ['a sample', 'two quoted']
편집을 인쇄합니다 : 당신의 따옴표는 유니 코드 문자 것 같다 유니 코드
에 적응. "(나도 처음에 발견되지 않았 음) “, ”을 사이에 미묘한 차이를 참고
내 원래의 대답은 당신의 코드 예제는 ASCII 문자열을 기반으로하지만,이 같은 정규식 문자열이 필요합니다
:.
match = re.findall(u'(?:\u201c(.*?)\u201d)', hand)
설명 :. \u201c
가 이 바로 따옴표에 대한 따옴표 및 \u201d
왼쪽위한의 u
가 유니 코드로 문자열을 표시
이것은 발췌 한 부분과 함께 작동합니다.
"작동하지 않음"을 정의하십시오. 무슨 문제입니까, 정확하게 당신은 관찰합니까? 이 코드는 적어도 두 번 "'" ''이있는 모든 행을 출력해야합니다 - ** ** ** 당신이 원하는 것이 아닌가요? 여러분이 원하는 것과 얻는 것을 보여주는 작은 예제를주세요. 장난감 크기의'city.txt', 예를 들어 작은 세 줄) –
당신이 정규식이라고 말했지만 ... open ('citi.txt')은 어떨까요? read(). replace (' "' ',' ')? – frodopwns
if 진술을'print re.search (r '(? : "(. *?)"), line) .group (1)' –