Python으로 특정 단어 인쇄

Python으로 특정 단어 인쇄

데이터가 포함된 "출력" 파일이 있습니다.

cell (XOR4DGHFDH22DSVT) {
cell (ND2DGH557GGHDSVT) {
cell (SDK1DNG45GKDSVT) {

나는 출력을 원한다.

XOR4DGHFDH22DSVT 
ND2DGH557GGHDSVT
SDK1DNG45GKDSVT

다른 파일에서 Python 2.7.5를 사용하여 이 출력을 얻고 싶습니다.

사용해 보았 re.findall()으나 split()구할 수 없었습니다. 내가 사용하는 코드는 다음과 같습니다

c2= open("out1", 'w')

file1= open("out","r")
for c in file1:
  split_lines = c.split(" ")
  print(split_lines[1]) >> c2

답변1

$ python3 -c 'import sys
with open(sys.argv[1]) as f:
  for l in f:
    a, b = map(lambda x: l.find(x), ["(",")"])
    print(l[a+1:b])
' out > out1

$ cat out1
XOR4DGHFDH22DSVT
ND2DGH557GGHDSVT
SDK1DNG45GKDSVT
  • 관용적/파이썬적 접근 방식은 이 with-open절을 사용하는 것입니다. 왜냐하면 eof에서 파일 설명자를 자동으로 닫고 열 때 오류도 처리하기 때문입니다.
  • 현재 행의 문자 위치를 기록 (하고 )문자열 분할 표기법을 사용하여 셀 이름을 추출합니다.
  • )이전에는 그런 일이 발생하지 않았다고 가정(

답변2

파이썬 사용재모듈화하다공격적인 뒤돌아보기를 통해 일치 항목 이전에 문자열을 찾지만 결과에는 사용하지 않습니다.

입력 파일에서 일치하는 항목을 모두 찾아 출력 파일에 한 줄씩 인쇄합니다.

import re

with open('input_file.txt', 'r') as f:
    m = re.findall('(?<=cell \()[^)]*', f.read())
    
with open('output_file.txt', 'w') as f:
    for x in m:
        f.write(x+"\n")

다음은 정규식에 대한 몇 가지 설명입니다.

                '(?<=   cell \(  ) [^)]*'
positive look-behind=   -------    match all to the next closing parenthesis

정규식을 보다 엄격한 형식으로 수정할 수 있습니다.

'(?<=cell \()[^)]*(?=\) {)'

미리보기 기능도 사용하려면 ) {일치 후 명시적으로 요청하세요.

시험

> cat input_file.txt 
cell (XOR4DGHFDH22DSVT) {
    test(test)
}
cell (ND2DGH557GGHDSVT) {
cell (SDK1DNG45GKDSVT) {
> python3 test.py 
> cat output_file.txt 
XOR4DGHFDH22DSVT
ND2DGH557GGHDSVT
SDK1DNG45GKDSVT

답변3

다양한 분할 작업을 연결하여 단위 이름을 얻을 수 있습니다.

python3 -c '
import sys 
with open(sys.argv[1]) as f:
  for l in f:
    print(l.split("(")[1].split(")")[0]) 
' input_file
XOR4DGHFDH22DSVT
ND2DGH557GGHDSVT
SDK1DNG45GKDSVT

관련 정보