본문 바로가기
ABAQUS/일반

abaqus field out 출력파일에서 원하는 값만 가져오기

by bigpicture 2022. 5. 23.
반응형

field output 에서 주응력, 주변형률을 출력했다. 

 

 

파이썬에서 요소라벨과 각 값들만 가져오고 싶었다. 정규표현식으로 시도해봤는데, 쉽지않았다. 

 

전략을 바꿨다. 각 줄을 문자열로 가져왔다. 

 

>>> raw_Zone_A[30]
'          642168     208.681E-06     152.361E-06    -665.429E-06    -6.03356E-03    -23.3627E-03    -274.990E-03\n'

 

split 연산자를 이용해서 쪼갰다. 

 

>>> raw_Zone_A[30].split()
['642168', '208.681E-06', '152.361E-06', '-665.429E-06', '-6.03356E-03', '-23.3627E-03', '-274.990E-03']

 

위 줄은 응력이 포함된 줄인데, 응력이 포함되지 않은 줄도 있다. 데이터의 첫줄 같은 경우다. 이런 줄은 제거해주어야 한다. split 연산자로 쪼갠 상태에서 첫번째 원소에 str.isdigit 함수를 적용했다. '642168'과 같이 정수형태면 True 를 반환한다. 이런 경우만 포함하면 된다. for 문을 짰고 아래와 같다.  

 

data=[]

for i in range(len(data_raw)) :
    
    if len(data_raw[i].split()) != 0 : #빈 줄이 있는 경우 제외

        if str.isdigit(data_raw[i].split()[0]) : #첫 원소가 정수인 경우만 포함 
            myline=list(map(float,data_raw[i].split())) #원소를 실수로 변경
            data.append(myline) #리스트에 추가

 

위 if 문에 포함되어 있는 내용인데 한번 더 설명하겠다. map 함수를 이용하여 실수형태로 바꿔주는 코드는 아래와 같다. 

 

>>> list(map(float,raw_Zone_A[30].split()))
[642168.0, 0.000208681, 0.000152361, -0.000665429, -0.00603356, -0.0233627, -0.27499]

 

반응형

댓글