Manipulate Fileでの日本語テキスト行の読み込み

ホーム フォーラム マリオネット Manipulate Fileでの日本語テキスト行の読み込み

  • このトピックには5件の返信、2人の参加者があり、最後にyamada-yaにより1ヶ月、 2週前に更新されました。
4件の返信スレッドを表示中
  • 投稿者
    投稿
    • #9089
      yamada-ya
      参加者

      第16回の記事を参考に、クラス名が各行に書かれたテキストファイルを読み込んで、新しいクラスを作るマリオネットを作ってみようと思い、Manipulate Fileというノードを試してみたところ、1byte文字のみで書かれたファイルは読み込んでくれたのですが、2byte文字が入ったファイルはエラーになりました。

      日本語のテキストファイルを読み込むことはできないのでしょうか?

    • #9092
      yamada-ya
      参加者

      あるいは入力を、外部ファイルではなく、一行づつクラス名が書かれたVWの文字列とする場合、splitノードを使って各行を取り出そうとすると、sDelimポートに与える、改行を示す(CR+LF的な)区切り文字としては、何を指定したらよいのでしょうか。

      • #9094
        木原 和信
        参加者

        yamada-ya様

        続きまして、splitノードですが、
        sDelimポートに何も入力しない(none)の状態ですと、空白文字を区切り文字とします。
        改行は空白文字として扱われますので、今回の場合は何も入力しないのが正解となります。

        ただし、OSの環境によって改行文字の扱いが異なりますので、うまく切れない場合も考えられます。この場合、環境に応じて次のいずれかの文字を入力してください。

        \r

        \n

        \r\n

    • #9093
      木原 和信
      参加者

      yamada-ya様

      ご連絡いただき、ありがとうございます。エーアンドエー研究開発部です

      マリオネットでは日本語のファイル名の場合、自動的に「asciiで記述されたテキストである」と判断して読み込みを実行しているようです。ですので、asciiでない文字コードで記述されたテキストは正常に読み込むことができません。

      対策といたしましては、英語名のファイル名に変更していただくか、Manipulate Fileノードの読み込みの部分のコードを直接修正する必要があります。

      ◯ utf-8のテキストを読み込む場合:

      50行目

      file = open(fullpath, status)

      file = open(fullpath, status, encoding='utf-8')

    • #9096
      yamada-ya
      参加者

      木原さんありがとうございます。教えていただいたようにコードを修正したら、読み込むことができました。

      このマリオネットのイメージは、EXCEL等のシートでクラスを管理して、それを一括して生成するというものです。入力としては外部ファイルで作成したクラス名一覧のテキストを読み込むより、その内容をコピペしてVWに貼り付けて、その文字列を選択した状態でマリオネット・コマンドから実行するのが、使い勝手のよいものになりそうです。

    • #9097
      yamada-ya
      参加者

      読み込み成功のスクショ

4件の返信スレッドを表示中
  • このトピックに返信するにはログインが必要です。