delimiter を持つ入力文字列があり$$$Field$$$
ます。文字列にいくつかの線があります。$$$Field$$$
だけで区切られた文字列内のすべてのアイテムのリストを返す必要があります。
以下の例では、出力として受け取る必要があります['Food', 'Fried\nChicken', 'Banana']
。ただし、新しい行も区切り記号として解釈しているように見えるため、リストの代わりにテーブルを取得しています。これらの新しい行を無視して、リストを戻すにはどうすればよいですか?
import pandas as pd
from pandas.compat import StringIO
temp=u"""Food$$$Field$$$Fried
Chicken$$$Field$$$Banana"""
df = pd.read_csv(StringIO(temp), sep='\$\$\$Field\$\$\$',engine='python')
print (df)
私がパンダを使用している唯一の理由は、この文字列が実際には巨大な .csv ファイルであり、一度にメモリ内のすべてを読み取ることはできませんが、ストリーミング処理は許容されるためです。
情報を表形式で保存するつもりはないので、DataFrame は必要ないと思います。代わりに、文字列をチャンクで読み取り、遭遇するたびにバッファーを生成し'$$$Field$$$'
ます。
https://stackoverflow.com/a/16260159/4410590から適応:
def myreadlines(f, newline):
buf = ""
while True:
while newline in buf:
pos = buf.index(newline)
yield buf[:pos]
buf = buf[pos + len(newline):]
chunk = f.read(4096)
if not chunk:
yield buf
break
buf += chunk
次に、関数を呼び出します。
> for x in myreadlines(StringIO(temp), '$$$Field$$$'):
print repr(x)
u'Food'
u'Fried\nChicken'
u'Banana'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加