°£´ÜÇÑ(?) python Áú¹® (2)

   Á¶È¸ 2837   Ãßõ 0    

 안녕하세요. 현재 python 독학중인 1인입니다.

매번 와서 질문만 늘어놓고 가서 죄송합니다.ㅠㅠ


현재 루프 구문 & 리스트, 데이터 입출력과 관련하여

생각하고 있는 간단한 문제를 풀어보려고 하는데 잘 되지 않아 글을 다시 한번 올리게 되었습니다.


우선 제가 생각하는 것은 엑셀에서 여러개의 x, y좌표를 받아오고 이를 파이썬에서 각각의 리스트화 시키는 것을 생각하고 있습니다.

x,y좌표의 갯수는 받아오는 상황에 따라 달라질 수 있기 때문에 while 구문을 이용하여 해결하려고 합니다.


문제는.. 루프구문 가기도 전에 데이터를 받아와서 리스트화 시키는 것이 만만치 않아 하루종일 고민하다 물어보게 되었습니다.


원본 데이터 파일은 예를 들자면 이런 식입니다.

1.24  \t  3  \n
2.50  \t  3.15  \n
4.24  \t  43.27  \n

이런 식의 데이터가 쭉 있을때


제가 접근하려 했던 방식은

우선 read 를 이용해서 읽고
\t 부분을 공백이나 다른 문자로 치환하고
str 부분을 float 로 바꾸어서 저장을 하면 되지 않을까 생각했습니다.


이를 위해서

# Test
f = open("test.txt",'r')

Test ="".join(input(str(f.readline())))
Test.replace("\t"," ")
Test.split()
float(Test[0])
print(Test)

f.close()

 이런 식의 알고리즘을 구성했습니다.

우선 join을 이용하여 1.24  \t  3  \n 부분을 하나의 문자로 변환시키고

\t 를 빈 공간으로 바꾼 다음 split를 이용해서 공백을 기준으로 데이터를 나눈다면

Test[0]에는 1.24가, Test[1]에는 3이 들어갈 것이라고 생각하였으며

이를 반복문을 통해 만들면 되지 않을까 고민했습니다.


그래서 우선적으로 Test[0]만 불러오려 해보았는데 제 예상과는 다르게

결과값에는 (1.24)가 아닌 (1.24   3)이 나오더라구요

뭔가 알고리즘에 문제가 있거나, 이상한 방식으로 접근이 된 것 같은데 혹시 조언을 좀 구할 수 있을런지요


감사합니다.

 

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
chis 2019-10
ÁöÇÏö¿¡¼­ ±Û º¸°í ÆùÀ¸·Î³ª¸¶ Á¦ »ý°¢À» Àû¾îº¸ÀÚ¸é
Àú¶ó¸é splitÀ» ºóÄ­(¡° ¡°)À¸·Î ÇÑÈÄ¿¡ ·çÇÁ·Î Çϳª¾¿ try±¸¹®À¸·Î float½ÃÄѼ­ º¯È¯ÀÌ µÇ´Â¾Ö´Â ÀúÀåÇÏ°í º¯È¯¾ÈµÇ´Â ¾ÖµéÀº except·Î ´ÙÀ½·çÇÁ·Î µ¹¸®°Ú¾î¿ä.
     
86±èÅ¿µ 2019-10
¤Ð¤Ð split¸¦ ºóÄ­(" ")À¸·Îµµ ÇØ º¸¾Ò½À´Ï´Ù¸¸Àº.. °°Àº Çö»óÀÌ ¹ß»ýÇϳ׿ä.
ÀÌ°Ô ¾îµð¼­ À߸øµÇ¾ú´ÂÁö¸¦ ¾Ë¸é ¼öÁ¤À» ÇÒÅÙµ¥ ±×°É ¾Ë ¼ö ¾ø¾î¼­ ´ä´äÇÕ´Ï´Ù ¤Ð¤Ð
          
chis 2019-10
ÆÄÀÏÀ» ¿Ã·ÁÁຸ¼¼¿ä...
               
86±èÅ¿µ 2019-10
ȸ»ç¶ó ÆÄÀÏÀº ¸ø¿Ã¸®°í..

1. data ÆÄÀÏ (ÇØ´ç ÆÄÀÏÀ» Test.dat·Î ÀúÀåÇß¾î¿ä)
1.34 (ÅÇ)    1
2 (ÅÇ)        2
3.56 (ÅÇ)    4
                    
chis 2019-10
data='4.24  \t  43.27  \n'
temp=data.split(" ")
temp2=list()
for i in temp:
    try:
        temp2.append(float(i))
    except:
        continue
print(temp2)

4.24  \t  43.27  \n ÀÌ°É ±×³É stringÀ¸·Î ³Ö¾î¼­ ó¸®ÇßÀ»¶© º° ¹®Á¦ ¾øÀÌ µ¹¾Æ°¡´Âµ¥
ÆÄÀÏÀ» ¸ø¿Ã¸®½Å´Ù ÇÏ´Ï Àß Á¶ÇÕÇؼ­ »ç¿ëÇغ¸¼¼¿ä.
86±èÅ¿µ 2019-10
py ÆÄÀÏÀº
# Test
f = open("test.txt",'r')
a = 0
#while a < 4:
Test = f.readline()
print(Test)
Test.split(" ")
list(Test)
print(type(Test))
print(Test)

ÀÔ´Ï´Ù.
86±èÅ¿µ 2019-10
¿ì¼± Ä£ÀýÇÑ °ü½É¿¡ °¨»çÇÕ´Ï´Ù.
ÇØ´ç¹®Á¦´Â ±×³É numpy¸¦ ¾²´Ï±î ¹Ù·Î 󸮰¡ µÇ³×¿ä¤Ð¤Ð
¸ðµâÀÌ ±¦È÷ ÀÖ´Â°Ô ¾Æ´Ï³×¿ä ¤Ð¤Ð
86±èÅ¿µ 2019-10
ÇØ´ç ±ÛÀÇ ¸ñÀûÀº listÈ­ ½ÃŲ ÈÄ¿¡ À̸¦ ÀÌ¿ëÇؼ­ ÀûºÐÇÏ´Â °Å¿´´Âµ¥ numpy¸¦ ½á¼­ Çϱâ¿Í °°ÀÌ °£´ÜÈ÷ ó¸®ÇÏ¿´½À´Ï´Ù.
±Ã±ÝÇÑ ºÐµéÀÌ ÀÖÀ»±îºÁ ±Û ³²±é´Ï´Ù.

# Test import
import numpy as nm

i = 0
area = 0
integ = 0
j = 1

csv_data = nm.loadtxt('Test11.csv', delimiter=',')

while i < (len(csv_data)-1):
    A = [csv_data[i][0],csv_data[i][1]]
    B = [csv_data[j][0],csv_data[j][1]]

    area = (B[0]-A[0])*(B[1]+A[1])/2
    integ += area
    i += 1
    j = i + 1

print(integ)


QnA
Á¦¸ñPage 1181/5686
2014-05   4971504   Á¤ÀºÁØ1
2015-12   1507765   ¹é¸Þ°¡
2017-01   4938   ½ÅÀº¿Ö
2018-04   8754   ¼ÛÁøÈ«
2004-03   7726   À̼ºÁß
2006-11   5310   ¼ÛÀçÈÆ
2004-04   8578   ±èÇüÇÊ
2016-02   4791   ´Ü±â±â¾ï»ó½Ç
2020-08   3051   shefef
2004-04   8836   ÀÌ°ü¿õ
2020-08   1891   DDDIE
2014-12   7568   Áö¼ö»ïÃÌ
2017-02   6373   ½Å¿ì¼·
2018-04   6660   ±è°Ç¿ì
2006-12   5328   ¹Úµ¿¼·
2010-08   12227   ¹¹¶óÄ«³ë
2018-04   4028   Àü¼³¼ÓÀǹ̡¦
2004-04   8110   ¹Ú¿ë¼±
2013-07   10166   ÀÎÀº±Ô
2016-03   3254   ±è°Ç¿ì
2007-01   4795   ÀÓÁ¾¿­
2019-06   2810   ´ÃÆĶõ