1 열만 있지만 거의 1500 레코드가있는 CSV 파일이 있습니다.CSV 파일에서 텍스트 추출
나는 11.1을 추출하고 싶습니다과
나는 예를 들어,
": 11.1V, 용량 4500mAh 샘플 배터리가 전압을 갖고"각 레코드에서 정보를 추출하고 싶습니다 다른 파일에 놓습니다 (예 : "voltage :"다음, "V"앞에). 레코드에 "voltage :"가 없으면 빈 줄을 넣고 싶습니다.
저는 리눅스 환경에서 가장 쉬운 방법은 무엇입니까?
1 열만 있지만 거의 1500 레코드가있는 CSV 파일이 있습니다.CSV 파일에서 텍스트 추출
나는 11.1을 추출하고 싶습니다과
나는 예를 들어,
": 11.1V, 용량 4500mAh 샘플 배터리가 전압을 갖고"각 레코드에서 정보를 추출하고 싶습니다 다른 파일에 놓습니다 (예 : "voltage :"다음, "V"앞에). 레코드에 "voltage :"가 없으면 빈 줄을 넣고 싶습니다.
저는 리눅스 환경에서 가장 쉬운 방법은 무엇입니까?
파이썬은 CSV 파일에서 데이터를 끌어와 함께 시작하는 것
import csv
source = open("myfile.csv", "rb")
rdr= csv.reader(source)
for row in rdr:
print "The sample battery has a Voltage: %.1fV, and capacity: %dmAh" % (float(row[0]), int(row[1]),)
.
분명히 (주석에 기초하여) 파일은 다음과 같이 보입니다.
"The sample battery has a Voltage: 11.1V, and capacity: 4500mAh"
1 열 CSV 일 수 있습니다. 또는 보너스 따옴표가있는 단일 행. 1 열 CSV 인 것처럼 보자.
import csv
import re
v_pat= re.compile(r' (\d+\.\d+)V')
mah_pat = re.compile(r' (\d+)mAh')
source = open("myfile.csv", "rb")
rdr= csv.reader(source)
for row in rdr:
v_match= v_pat.search(row[0])
mah_match= mah_pat.search(row[0])
if v_match and mah_match:
print v_match.group(1), mah_match.group(1)
else:
print # empty line -- not very informative
그와 같은 것이 적절할 수 있습니다.
인 CSV 규칙을 따르는 지 여부에 따라 달라집니다. 안녕하세요, 이는 의도 한 것과 정확히 반대입니다. 기본적으로 phpMyAdmin으로 내 보낸 장바구니의 CSV 파일이므로 대신 번호를 추출하고 싶습니다. 프로그램이 "Voltage :"를 볼 때마다, 그 직후에 실수 (이 경우에는 부동 소수점)를 추출합니다. – segfault
질문을 명확히하여이 새로운 정보를 포함하십시오. –
단일 열 CSV 파일의 의미를 정확히 모르겠습니다. 단일 열이있는 경우 텍스트 파일이 아닌가요?
어쨌든, 각 라인 위처럼 보이는 우리는이 같은 파일이있는 경우 :
bash-3.2$ cat example.txt The sample battery has a Voltage: 11.1V, and capacity: 4500mAh The sample battery has some other info but no v entry The sample battery has a Voltage: 12.1V, and capacity: 4200mAh
이 그럼 당신은 쉽게 달성 regexp와 함께 11.1을 제거하고이 등으로 색인을 유지할 수 :
를bash-3.2$ sed -e 's/.*Voltage: \([^V]*\)V.*/\1/' -e 's/^The.*//' < example.txt 11.1 12.1
전압이 포함되지 않은 선의 형식을 잘못 이해하면 조정할 수 있습니다. 제 표현식은 서식 설정과 관련하여 매우 약해서 개선 될 수 있습니다. 또한 귀하의 의도가 불분명하기 때문에 인용문을 포함하지 않았습니다. 위와 같은 작업을 조정할 필요가 있습니다.
파일에 두 개의 열이 포함되어있는 것 같습니다 (쉼표가 있음) –
이 권리를 얻을 수 있습니까? 해당 CSV의 모든 회선이 설명 된 것과 같습니다. 먼저 '전압 :'과 'V'가 존재하는지 확인한 다음 그 사이의 숫자를 찾아 다른 파일로 내 보내야합니다. – Javier
Assaf는 따옴표로 묶은 명령문이 쉼표를 포함 할 수있는 문자열보다 – simon