• ベストアンサー

String の途中で改行するには?

こんにちは、何時もお世話になっております。 現在課題をやっている途中なのですが、少し困った事が起きてしまいました。 プログラムは完璧に出来たのですが、どうしても長いStringが存在してしまい、80文字以上の長いラインを書いてはいけないというルールに反してしまうのです。Pythonを使っているのですが、普通は \ を最後につける事によって改行するのですが、例えば、 assert genetics.get_sequence("C:\\dna_example.txt") == \ "CTTATCAACCTGGATGGGGGATAGAAGAGACTCCACTTGT \ "CCACCTCAGCAGTCGTTTAACGCCGTGACCGTGTGGCGTTGTTTTGCTAG", \ "test reading dna file into string" このような構文があった場合、最初の行は成功するのですが、次行のSTRINGがあまりにも長くなってしまい、かと言って\で改行する事ができないのです。検索でもかけてみたのですが、上手い事解決法が見つからず・・・ご存知の方はいらっしゃいますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

正直なところルールの方をどうにかすべきだろうとは 思いますが、そうもいってられないでしょうから assert genetics.get_sequence("C:\\dna_example.txt") == \ のあとを "CTTATCAACCTGG..." +\ "AGAGACTCCACTT..." +\ "...GTTGTTTTGCTAG", \ "test reading dna file into string" としたらどうでしょうか? == の直後と、カンマの直前にそれぞれ開き/閉じカッコを 置いて括った方がいいかもしれません。

DeeAnna
質問者

お礼

やっぱりそうするしか無いですよねー。 実はタイムリーに課題の提出期間が延びたので、教授に聞いてみたのですが、やはり上記のようにやって下さいといわれました。 正直やる意味があるのかどうか・・・は不明ですが。(汗) ご回答有難うございましたー。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

無粋なツッコミですが、 これは多分テストユニットの一文なので、 文字列を変数に入れてしまうとテストの意味が 変わってしまって望ましくありませんよ。>Oh-Orangeさん

DeeAnna
質問者

お礼

うっ・・・私も所々長くなりそうな文を変数に入れてしまっているんですが、 やっちゃ駄目なんですか・・・?ちょっと確認してみますね。 有難うございました。

全文を見る
すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★塩基配列の文字列を文字列変数などに追加していけば良いのでは? ・塩基配列の文字列を 80 文字以内に収まるように文字列変数に結合していき、  『=』の直後に文字列変数を記述してみてはどう。 ・80 文字以上の長いラインは駄目というのは『DOS』画面への出力なのかな? 余談: ・遺伝子に関わる課題なんですか。興味心身ですね。 ・昔、ATCGの順に『アデニン』、『チミン』、『シトシン』、『グアニン』と4つの  塩基名を覚えたころがありました。懐かしいです。 ・以上。おわり。

DeeAnna
質問者

お礼

なるほど、そう言う手もありますね。 すっきりしそうですし、メモっときますー。 いや、何故かうちの芸術科は、別科を一つ取らなくてはならなくて、 今年はコンピュータープログラムを選んだわけですが、何故遺伝子!?あ( ̄□ ̄;)とショックを受けております。ぶっちゃけ遺伝子って何!科学なの物理なの生物なの!?・・・というぐらいの人間なので、大変でした。 問題の意味を理解するのに実際プログラムの10倍ぐらい時間かかってます。しくしく・・・。 あ、話がそれてしまいましたが、ご回答有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • select-stringについて

    robocopyとselect-stringについて robocopyの結果は、LOGオプションで確認できますが、 なんせ大量に出力され、コピーができなかったファイルやアクセスできなかった ファイルなどをlogの中から目視で特定するのは大変ですよね。 そこで、robocopyのログからコピーできなかったファイルだけを Powershellの文字列検索コマンド( Select-String)で抽出してみたのですが、 PowerShellの構文やselect-stringの使い方合っていますか? -pathとか良くわからない状態ですが、しっかりと、"エラー" プロセスはファイルにアクセスできません。別のプロセスが使用中です。" という箇所の行だけ出力されたファイルができあがりましたが、 本当に使い方など正しいのか・・・自身無しです。 select-stringではなく、コマンドプロンプトのfindではできないですかね? <実行> まず、コマンドプロンプトよりrobocopyを実施。 admin>robocopy C:\windows D:\bk /MIR /R:1 /W:3 /TEE /LOG:roblog.txt そして、PowerShellでコピーできなかったファイルだけを吐き出す。 get-content C:\user\administrator\robolog.txt | Select-String "エラー","プロセスはファイルにアクセスできません。別のプロセスが使用中です。" > erro.txt どなたかご教授下さい。

  • VB6.0 改行コードのないファイルの読み込み

    VB6.0で改行コードが無く、半角と全角文字が入り混じっているファイルの読み取り方法を教えて下さい。 通常の一行読み込みの範囲を大幅に超えている文字列です。 他のサイトで以下のようなプログラム(20バイトずつ切り取って読む)を見つけたのですが、 Dim InFileNo As Integer Dim Buf As string * 10 Dim LINE As Long InFileNo = FreeFile Open "C:\test.txt" For Random As #InFileNo Len = 20 LINE = 1 Do Until EOF(InFileNo) Get #InFileNo, LINE, buf LINE = LINE + 1 Loop これだと、半角と全角が混じっている箇所で文字化けを起こしてしまいます。 以上です。よろしくお願い致します。

  • VBAにより作成した関数の返り値をセル内で改行したいのですが、どうした

    VBAにより作成した関数の返り値をセル内で改行したいのですが、どうしたら良いのでしょうか? Private Function txtdate(filepass As String) Dim fileNo As Integer Dim count As Integer Dim outline As String Dim buf fileNo = FreeFile Open filepass & ".txt" For Input As #fileNo ' Do Until EOF(fileNo) Line Input #fileNo, buf If count = 0 Then outline = outline & buf MsgBox outline Else outline = outline & vbLf & buf MsgBox outline End If count = count + 1 Loop Close #fileNo txtdate = outline End Function このような形でテキストファイルの中身を読み込んでセルに反映させるという事をおこないたいのですが、テキストの内容が2行以上の場合、帰ってくる値に改行を入れたいと思っております。 17行目にそれらしくvblfを追加したのですがセルに上手く反映されません。msgboxで確認したところmsgboxでは問題無く改行が反映されているようなのですが… エクセルセル内で「=txtdate("適当なテキストファイルのパス名")」という形で関数を呼び出しています。 どなたか対処法教えていただければ幸いです。よろしくお願い致します。

  • explodeがよくわかりません。(初心者です。)

    PHPのド初心者です。色々勉強初めて見ました。 諸先生方に教えてほしいのですが、 外部ファイルを読み込んで配列にするってのをやってるのですが、 外部ファイル 123.txtが ****************** 大きなリンゴ 小さな数字 呼び戻し ++++++++++++++++++ だったとします。 (以下に改行位置を↓で再度書きます。つまり5行あります。) ************************* 大きなリンゴ↓ 小さな数字↓ 呼び戻し↓ ↓ [EOF] ************************* これをtest.phpで以下のように記述しました。 **************** <?php //ファイルを読み込む $file = file_get_contents('123.txt'); //ファイルを改行で配列に入れる $word = explode("\r",$file); echo "word<br />"; var_dump($word); ?> ******************** としますと、 結果が ************************ word array(5) { [0]=> string(21) "大きなリンゴ" [1]=> string(16) " 小さな数字" [2]=> string(13) " 呼び戻し" [3]=> string(1) " " [4]=> string(1) " " } ************************ こうなります。 いけてるようなのですが、思った通りでなく [0] の "大きなリンゴ"はいいのですが、 [0] 以降のやつには、 [1]" 小さな数字" [2]" 呼び戻し"" [3]" " [4]" " わかりにくいかもですが、 最初のダブルコーテンションのあとに、謎の一文字が入ります。 *で表現しますと [0]"大きなリンゴ"(←これには入ってないです。) [1]"*小さな数字" [2]"*呼び戻し"" [3]"*" [4]"*" こんな感じになってるのです。 この*の文字が、やりたい事を邪魔をしてて先に進みません。 この*を消すには(というか、入らないように配列に入れるには)どうしたらいいのでしょうか? 根本的にわかってないかもなんですが、よろしくお願いいたします。 m(_ _)m

    • 締切済み
    • PHP
  • 特定の行を編集したい-perl

    特定の行を編集するプログラムを組んでいます。 どうしても2行だったものが1行になってしまいます。 1111,山田,2007/03/10 2222,田中,2007/04/09 3333,南,2007/06/01 ↓↓編集後 1111,山田,2007/03/10↑2222,田中,2007/04/09 3333,南,2007/06/01 になります。↑矢印が出現し2行だったのが1行になります。 スクリプトは、 &read_txt2; foreach (@txt) { # chomp $_; ($tonum, $name, $login) = split(/,/, $_); if ($tonum eq $mynum) { $login = &get_date_string; # $login .= "\n"; $_ = join(',', ($tonum, $name, $login)); } push(@all_txt, $_); } @txt = @all_txt; &write_txt2; Perl逆引き大全600と同じようなスクリプトなのですが・・・ 気になる点としては$loginが空っぽデータであることです。 関係あるでしょうか? 改行コードについてはchompで削除してみたりしたのですが、 駄目でした。変化なし。 ちなみにログイン時にログインした日時を更新していくスクリプトです。

    • ベストアンサー
    • CGI
  • Python で、既存のテキストにデータを書き加えたいと思っています。

    Python で、既存のテキストにデータを書き加えたいと思っています。 こんにちは、 私はプログラミング初心者であります。仕事で必要に迫られたこともあり、知人より簡単だから、とPythonを薦められ、学習を始めています。 質問は、既存のテキストファイルの文頭に、数字と文字を付け加えたいと思っているのですが、上手く行きません。 既存のテキスト(data.txt)はこんな感じで、保存されています。 1111.1111   2222.2222   3333.3333   4444.4444   5555.5555 5555.5555   6666.6666   7777.7777   8888.8888   9999.9999 1010.1010   1110.1111   1210.1212   1310.1313   1414.1414 実際には縦横に永遠とデータが羅列されています。空白部分はタブ区切りになっています。横に7000ほどのデータを読むと、改行されています。これがテキスト方式で保存されています。 このデータ群の先頭に6行文のデータを追加したいと試みています。以下のような感じのデータです。 ncols      1019 nrows      1923 xllcorner    -67.2327777773961 yllcorner    44.63742951396 cellsize    0.000277777777779674 NODATA_VALUE   -999 open関数で data.txt を開き、write を使ってしまうと、data.txt 内のデータが全て消えてしまうのですが、どのようにすれば上記にある6つのデータを書き加える事ができるのでしょうか? 大本のデータは縦横に 9000x7000 近くのデータがタブで区切られて保存されており、その大きさが 500MB を越えていて、職場のPCではノートパッドで開いてから書き足す事ができません。 どなたかアドバイスを頂ければ幸いであります。

  • こんにちは、

    こんにちは、 私はプログラミング初心者であります。仕事で必要に迫られたこともあり、知人より簡単だから、とPythonを薦められ、学習を始めています。 質問は、既存のテキストファイルの文頭に、数字と文字を付け加えたいと思っているのですが、上手く行きません。 既存のテキスト(data.txt)はこんな感じで、保存されています。 1111.1111 2222.2222 3333.3333 4444.4444 5555.5555 5555.5555 6666.6666 7777.7777 8888.8888 9999.9999 1010.1010 1110.1111 1210.1212 1310.1313 1414.1414 実際には縦横に永遠とデータが羅列されています。空白部分はタブ区切りになっています。横に7000ほどのデータを読むと、改行されています。これがテキスト方式で保存されています。 このデータ群の先頭に6行文のデータを追加したいと試みています。以下のような感じのデータです。 ncols 1019 nrows 1923 xllcorner -67.2327777773961 yllcorner 44.63742951396 cellsize 0.000277777777779674 NODATA_VALUE -9999 open関数で data.txt を開き、write を使ってしまうと、data.txt 内のデータが全て消えてしまうのですが、どのようにすれば上記にある6つのデータを書き加える事ができるのでしょうか? 大本のデータは縦横に 9000x7000 近くのデータがタブで区切られて保存されており、その大きさが 500MB を越えていて、職場のPCではノートパッドで開いてから書き足す事ができません。 どなたかアドバイスを頂ければ幸いであります。

  • サーバの、クライアント間でデータ共有

    JavaScript, HTML5 で作成しています。 現在、サーバ側の hoge.txt を読込んで、読んだ内容をクライアント側へ 渡す事を行おうとしています。 ActiveXObject を使用してファイルを読み、取得した responseText を <INPUT type="hidden">へ書き込んでサーバからクライアントへサーバの hoge.txt の内容をクライアントへ渡す事を実現をさせています。 上記では、改行なしの数十文字程度さであれば問題ないjのですが、hoge.txt は改行ありの文字数制限なし との仕様との事なので、上記では仕様の要件を満たせていません。 サーバからクライアントへ hoge.txt をダウンロードして読み込ませた方が 要求を満たす事ができるのでしょうか? 何か良い方法があったらお教えください。 ● 現在のソース 【HTML】 <body onload="initialize()"> <input type="hidden" id="hogetext" value="" /> 【JavaScript】 function initialize() { if (navigator.appName.indexOf("Microsoft") > -1) { xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); } else { xmlhttp = new XMLHttpRequest(); } xmlhttp.open("GET", 'hoge.txt', true); if (navigator.appName.indexOf("Microsoft") > -1) { xmlhttp.onreadystatechange = SetText; } else { xmlhttp.onload = SetText; } xmlhttp.send(""); } function SetText() { if (xmlhttp.readyState == 4) { document.getElementById('hogetext').value = xmlhttp.responseText; } }

    • ベストアンサー
    • HTML
  • [Erroer] pylear2 tutorial

    度々申し訳ありません。 cd pylearn2 python setup.py developの実行を行い、 running develop running egg_info writing requirements to pylearn2.egg-info/requires.txt writing pylearn2.egg-info/PKG-INFO writing top-level names to pylearn2.egg-info/top_level.txt writing dependency_links to pylearn2.egg-info/dependency_links.txt reading manifest file 'pylearn2.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'pylearn2.egg-info/SOURCES.txt' running build_ext Creating /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pylearn2.egg-link (link to .) pylearn2 0.1dev is already the active version in easy-install.pth Installed /Users/k11053kk/pylearn2 Processing dependencies for pylearn2==0.1dev Searching for argparse==1.2.2 Best match: argparse 1.2.2 Processing argparse-1.2.2-py2.7.egg argparse 1.2.2 is already the active version in easy-install.pth Using /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/argparse-1.2.2-py2.7.egg Searching for PyYAML==3.11 Best match: PyYAML 3.11 Processing PyYAML-3.11-py2.7-macosx-10.6-intel.egg PyYAML 3.11 is already the active version in easy-install.pth Using /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyYAML-3.11-py2.7-macosx-10.6-intel.egg Searching for Theano==0.6.0 Best match: Theano 0.6.0 Processing Theano-0.6.0-py2.7.egg Theano 0.6.0 is already the active version in easy-install.pth Installing theano-cache script to /Library/Frameworks/Python.framework/Versions/2.7/bin Installing theano-nose script to /Library/Frameworks/Python.framework/Versions/2.7/bin Installing theano-test script to /Library/Frameworks/Python.framework/Versions/2.7/bin Using /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Theano-0.6.0-py2.7.egg Searching for numpy==1.7.2 Best match: numpy 1.7.2 Adding numpy 1.7.2 to easy-install.pth file Using /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages Searching for scipy==0.16.0.dev-3a00319 Best match: scipy 0.16.0.dev-3a00319 Adding scipy 0.16.0.dev-3a00319 to easy-install.pth file Using /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages Finished processing dependencies for pylearn2==0.1dev と、developは成功致しました。 しかし、 cd pylearn2/pylearn2/scripts/tutorials/grbm_smd/ python make_dataset.py の実行を行ったところ、 Traceback (most recent call last): File "make_dataset.py", line 27, in <module> train = cifar10.CIFAR10(which_set="train") File "/Users/aaa/pylearn2/pylearn2/datasets/cifar10.py", line 73, in __init__ data = CIFAR10._unpickle(fname) File "/Users/aaa/pylearn2/pylearn2/datasets/cifar10.py", line 244, in _unpickle fname = os.path.join(string_utils.preprocess('${PYLEARN2_DATA_PATH}'), File "/Users/aaa/pylearn2/pylearn2/utils/string_utils.py", line 55, in preprocess reraise_as(NoDataPathError()) File "/Users/aaa/pylearn2/pylearn2/utils/exc.py", line 90, in reraise_as six.reraise(type(new_exc), new_exc, orig_exc_traceback) File "/Users/aaa/pylearn2/pylearn2/utils/string_utils.py", line 52, in preprocess else os.environ[varname]) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py", line 23, in __getitem__ raise KeyError(key) pylearn2.utils.exc.NoDataPathError: You need to define your PYLEARN2_DATA_PATH environment variable. If you are using a computer at LISA, this should be set to /data/lisa/data. Platform-specific instructions for setting environment variables: Linux ===== On most linux setups, you can define your environment variable by adding this line to your ~/.bashrc file: export PYLEARN2_VIEWER_COMMAND="eog --new-instance" *** YOU MUST INCLUDE THE WORD "export". DO NOT JUST ASSIGN TO THE ENVIRONMENT VARIABLE *** If you do not include the word "export", the environment variable will be set in your bash shell, but will not be visible to processes that you launch from it, like the python interpreter. 対応策をお願い致します。 足りない部分は補足します。

  • テキスト取込からのデータ取込編集エラーについて

    ACCESS97でインポートしたテキストを文字を変換させて新しく修正したテキストを 作成したい流れですがエラーになります。 ご教授お願いします。 ユーザー定期型は定義されていません。 ↓チェックとを入れると Microsoft DAO 3.6 Object Library ↓下記のエラーになります この名前は既にあるモジュール、プロジェクト、オブジェクトライブラリで使われています。 Private Sub cmd選択_Click() Dim objExcel As Object Dim varFilePath As Variant Dim bln As Boolean Dim infname As String Dim TName As String TName = "取込用" Call F_ExecuteSQL("DELETE FROM " & TName & "") Set objExcel = CreateObject("Excel.Application") varFilePath = objExcel.GetOpenFileName("Microsfot Access (*.txt), *.txt", , "txt選択") If varFilePath <> False Then infname = varFilePath DoCmd.TransferText acImportDelim, "取込定義", TName, infname, True Call Div MsgBox "修正したデータを正常出力しました。" End If Set objExcel = Nothing End Sub Private Sub Div() Dim infname As String Dim outfname As String Dim n_in As Integer Dim n_out As Integer Dim tmpREC As typREC Dim tmpSP As typSpace Dim tmpNL As typNewLine Dim tmpStr As String outfname = myReplaceB(infname, ".txt", ".r.txt") n_out = FreeFile() Open outfname For Output As #n_out n_in = FreeFile() Open infname For Binary As #n_in Get #n_in, , tmpNL Do Until EOF(n_in) Get #n_in, , tmpREC tmpStr = myReplaceB(tmpREC.REC400, Chr(0), "") Print #n_out, tmpStr 'datファイルが改行されてる場合は改行コードを読み捨て Get #n_in, , tmpSP Get #n_in, , tmpSP Get #n_in, , tmpSP Get #n_in, , tmpSP Loop Close #n_in Close #n_out End Sub Function myReplaceB(ByVal myString, ByVal myFind, ByVal myRp) 'Access2000風 replace関数 (Access97、Excel97用) '「大文字小文字半角全角カタカナひらがな」を区別する 2003/10/11 pPoy Dim strTmp As String Dim wk1 As Integer, wk2 As Integer Dim wk3 As Integer, wk4 As Integer '準備 If IsNull(myString) Then Exit Function If IsNull(myFind) Then Exit Function wk4 = Len(myFind) '検索する文字数 wk3 = Len(myString) '検索対象の文字数 '最初に見つかった位置 wk2 = InStr(1, myString, myFind, vbBinaryCompare) wk1 = 1 '検索開始位置 '無ければそのまま If wk2 = 0 Then myReplaceB = myString Exit Function End If '文字の最後まで置換 Do strTmp = strTmp & Mid(myString, wk1, wk2 - wk1) & myRp wk1 = wk2 + wk4 wk2 = InStr(wk1, myString, myFind, vbBinaryCompare) Loop Until wk2 = 0 strTmp = strTmp & Mid(myString, wk1, wk3) myReplaceB = strTmp End Function