私は1列しか持っていないが1500レコードに近いCSVファイルを持っています。CSVファイルからテキストを抽出します
私は11.1を抽出したいと
私は例えば、
「:11.1V、および容量4500mAhサンプル電池は電圧を持っている」、各レコードから情報を抽出したいのですが別のファイルに置く。すなわち、 "voltage:"の後に "V"の前に置く。レコードに「電圧:」がない場合は、空の行を入れたいと思います。
私はLinux環境になっていますが、これを行う最も簡単な方法は何ですか?
私は1列しか持っていないが1500レコードに近いCSVファイルを持っています。CSVファイルからテキストを抽出します
私は11.1を抽出したいと
私は例えば、
「:11.1V、および容量4500mAhサンプル電池は電圧を持っている」、各レコードから情報を抽出したいのですが別のファイルに置く。すなわち、 "voltage:"の後に "V"の前に置く。レコードに「電圧:」がない場合は、空の行を入れたいと思います。
私はLinux環境になっていますが、これを行う最も簡単な方法は何ですか?
Pythonの
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]),)
あなたはCSVファイルからデータを引っ張って始めるでしょう。
明らかに(コメントに基づいて)ファイルは次のようになります。
"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
そうかもしれません。
こんにちは、これは私が意図しているのと正反対です。基本的にはショッピングカート(phpMyAdminでエクスポート)からのCSVファイルです。その代わりに番号を抽出したいと思います。 プログラムは "Voltage:"と表示されるたびに、その直後に実数(この場合は浮動小数点)を抽出します。 – segfault
質問を明確にして、この新しい情報を追加してください。 –
1つの列のCSVファイルの意味を正確にはわかりません。 1つの列がある場合は、単なるテキストファイルではありませんか?
とにかく、各行は、上記のように見え、我々はこのようなファイルがある場合:
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
はその後、簡単にこれを実現する正規表現と11.1を取り除くと、このようにインデックスを保持することができます
をbash-3.2$ sed -e 's/.*Voltage: \([^V]*\)V.*/\1/' -e 's/^The.*//' < example.txt 11.1 12.1
私が電圧を含まない線の形式を誤解している場合は、調整可能です。私の表現はあなたの書式に関して非常に壊れやすく、改善することができます。また、あなたの意図がはっきりしていないので、私は引用を含めなかったことに注意してください。上記のものは、それらと一緒に働くように(少しずつ)調整する必要があります。
ファイルに2つの列が含まれているようです(そこにコンマがあります) –
私はこの権利を得ていますか?そのCSVのすべての行は、あなたが記述した行のように見えますか?だからまず、 'Voltage:'と 'V'が存在するかどうかを確認し、その間の数字を探して別のファイルにエクスポートする必要があります。 – Javier
Assafは、引用符で囲まれた文がカンマを含むことができる文字列であるというCSV規則に従っているかどうかによって異なります。 – simon