2015-01-15 3 views
0

.txt 파일의 일부 데이터를 Python 스크립트로 수집하려고합니다. 문제는 데이터를 수집 할 때 열 중 하나에서 데이터를 수집 할 수 없어 평소보다 쉼표가 많다는 것입니다. 그것은 다음과 같습니다 : 0,0,, - 2235 1100,, - 2209 2,200 ,, - 내가 원하는 모든 데이터를로드하고 쉼표를 제거하지만,하는 2209Python에서 너무 많은 쉼표로 데이터 파일로드

나는 numpy.loadtxt으로 시도 할 때 나에게 가치 오류를 준다. 나는 무엇을해야합니까?

+0

은 누락 된 값이 있기 때문에 쉼표입니까? –

답변

0

당신은

In[1]: import re 
In[2]: re.split(',,|,', '0,0,,-2235 1,100,,-2209 2,200,,-2209') 
Out[2]: ['0', '0', '-2235 1', '100', '-2209 2', '200', '-2209'] 

',,|,' 그것은 첫째 ,,에서 분리 한 다음 결과에서, 그것은 ,에서 분할을 계속 의미 분할하는 정규 표현식 모듈을 사용할 수 있습니다.

그래서 당신은 (\sspace을 의미) -22351 대신 -2235 1 당신이 ',,|,| ' 또는 ',,|,|\s'가 눈을 완화하는 데 사용할 수있는 싶어합니다.

0

이 옵션이 있는지 모르겠지만 tr -s ',' file.txt을 사용하여 사전 처리 할 수 ​​있습니다. 이것은 셸 명령이므로 파이썬을 호출하거나 system을 사용하기 전에 수행해야합니다. 후자는 dragon2fly가 파이썬 함수를 사용하여이 문제를 해결 한 이후로 최선의 방법이 아닐 수도 있습니다.

1

정말로 당신이하려는 일에 달려 있습니다. 나는 당신이 정말로하려고하는 것을보기 위해 코드 예제를 볼 필요가있다. 당신은 문자열에서 데이터의 위치를 ​​상실하지 않으려면 그냥 하나 하나

inputstr = "0,0,,-2235 1,100,,-2209 2,200,,-2209" 
inputstr = inputstr.replace(",,",",") 

와 이중 쉼표를 대체 또는 수, 어쩌면 종류

의 null 값으로 이중 쉼표를 교체
inputstr = "0,0,,-2235 1,100,,-2209 2,200,,-2209" 
inputstr = inputstr.replace(",,",",0,") 

중요한 점은 데이터를 손상시키지 않으려면 값을 입력해야한다는 것입니다. 실제로 데이터가 의미하는 것과 당신이하려는 일에 관한 것입니다.

+0

교체가 잘되어 있습니다. – ShellFish

+0

글쎄, 그냥 데이터를 배열로 넣을 필요가있다. inputfile = np.loadtxt ("data.txt") 하지만 내가 할 때 얻을 수있는 것은 : ValueError : float()에 대한 유효하지 않은 리터럴 : 0, 0, -2235. 쉼표가 너무 가깝기 때문에 파일 형식이 올바르지 않은 것처럼 보입니다. 그 일을 돕기 위해 무엇을 할 수 있습니까? –