4

数値のリストを含むテキスト ファイルに変換した Excel ファイルがあります。

test = 'filelocation.txt'

in_file = open(test,'r')

for line in in_file:
    print line

1.026106236
1.660274766
2.686381002
4.346655769
7.033036771
1.137969254

a = []

for line in in_file:
    a.append(line)
print a

'1.026106236\r1.660274766\r2.686381002\r4.346655769\r7.033036771\r1.137969254'

リスト内の個々の要素に (各行の) 各値を割り当てたいと思いました。代わりに、 \r で区切られた 1 つの要素を作成しています。\r が何であるかはわかりませんが、なぜこれらをコードに入れるのですか?

文字列から \r を取り除く方法を知っていると思いますが、ソースから問題を修正したいと思います

4

6 に答える 6

5

、、のいずれかを改行として受け入れるには\r、(ユニバーサル改行)ファイルモードを使用できます。\n\r\n'U'

>>> open('test_newlines.txt', 'rb').read()
'a\rb\nc\r\nd'
>>> list(open('test_newlines.txt'))
['a\rb\n', 'c\r\n', 'd']
>>> list(open('test_newlines.txt', 'U'))
['a\n', 'b\n', 'c\n', 'd']
>>> open('test_newlines.txt').readlines()
['a\rb\n', 'c\r\n', 'd']
>>> open('test_newlines.txt', 'U').readlines()
['a\n', 'b\n', 'c\n', 'd']
>>> open('test_newlines.txt').read().split()
['a', 'b', 'c', 'd']

ファイルから数値(浮動小数点)配列を取得する場合。ファイル文字列を配列に読み込む(Pythonの方法で)を参照してください。

于 2012-12-01T05:25:21.927 に答える
2

rstrip()最後の文字がrstrip('\r')常に\r.

for line in in_file:
    print line.rstrip()

ヘルプstr.rstrip():

S.rstrip([chars]) -> string or unicode

Return a copy of the string S with trailing whitespace removed.
If chars is given and not None, remove characters in chars instead.
If chars is unicode, S will be converted to unicode before stripping

str.strip()末尾と先頭の両方の空白を削除します。

于 2012-12-01T05:03:53.210 に答える
0

strip() を使用して、改行と改行を行から削除できます。

line.strip()

すなわち

for line in in_file:
    a.append(line.strip())
print a
于 2012-12-01T05:03:35.610 に答える
0

これを修正するには、次のようにします。

for line in in_file:
    a.append(line.strip())
于 2012-12-01T05:04:48.203 に答える
0

.strip()不要な空白を削除する行:

lines = []

with open('filelocation.txt', 'r') as handle:
    for line in handle:
        line = line.strip()
        lines.append(line)

        print line

print lines

また、with ...表記法を使用してファイルを開くことをお勧めします。よりクリーンで、ファイルを自動的に閉じます。

于 2012-12-01T05:05:18.067 に答える
0

まず、私は一般的に @JF Sebastian の回答が好きですが、私の使用例はPython 2.7.1: How to Open, Edit and Close a CSV fileに近いです。私の文字列はテキストファイルから取得され、Excel から csv として出力されたからです。さらに csv モジュールを使用して入力します。その質問で示されているように:

「rU」対「rb」対...に関しては、csvファイルは実際にはバイナリである必要があるため、「rb」を使用してください。ただし、Windowsのメモ帳にコピーした人からのcsvファイルがあり、後で他のファイルと結合されて、ファンキーな行末になることは珍しくありません。それをどのように処理するかは、ファイルと好みによって異なります。– @kalhartt 1 月 23 日 3:57

python docsで推奨されているように、「rb」として読むことに固執します。今のところ、セル内の \r は Excel の使い方の癖の結果であることを知っているので、'\r' を別のものに置き換えるためのグローバル オプションを作成します。 \n' ですが、後で '' (二重引用符ではなく空の文字列) になり、単純な json が変更されます。

于 2013-12-29T15:49:21.113 に答える