私はこのような文字列を処理しています:
scrpt = "\tFrame\tX pixels\tY pixels\r\n\t2\t615.5\t334.5\r\n\t3\t615.885\t334.136\r\n\t4\t615.937\t334.087\r\n\t5\t615.917\t334.106\r\n\t6\t615.892\t334.129\r\n\t7\t615.905\t334.117\r\n\t8\t615.767\t334.246\r\n\t9\t615.546\t334.456\r\n\t10\t615.352\t334.643\r\n\r\n"
infile = StringIO(scrpt)
#pretend infile was just a regular file...
r = csv.DictReader(infile, dialect=csv.Sniffer().sniff(infile.read(1000)))
infile.seek(0)
Frame, Xco, Yco = [],[],[]
for row in r:
Frame.append(row['Frame'])
Xco.append(row['X pixels'])
Yco.append(row['Y pixels'])
これはうまくいきます。文字列変数「scrpt」を変数「Frame」、「Xco」、および「Yco」に適切にソートします
今私がこれを行うと:
print(scrpt)
次のように、タブ付きの列にきちんと配置されていることがわかります。
Frame X pixels Y pixels
2 615.5 334.5
3 615.885 334.136
4 615.937 334.087
5 615.917 334.106
6 615.892 334.129
7 615.905 334.117
8 615.767 334.246
9 615.546 334.456
10 615.352 334.643
しかし、クリップボードから同じ文字列を貼り付けて処理しようとしても、うまくいきません。この場合、次のように印刷すると:
print(scrpt)
そうですか:
\tFrame\tX pixels\tY pixels\r\n\t2\t615.5\t334.5\r\n\t3\t615.885\t334.136\r\n\t4\t615.937\t334.087\r\n\t5\t615.917\t334.106\r\n\t6\t615.892\t334.129\r\n\t7\t615.905\t334.117\r\n\t8\t615.767\t334.246\r\n\t9\t615.546\t334.456\r\n\t10\t615.352\t334.643\r\n\r\n
次に、それを処理しようとすると、csv モジュールはそれを整理しません。
私は何を間違っていますか?どちらの場合も同じデータを使用しているように見えますが、何かが異なります。