1

私はPythonにかなり慣れていません。私が使用している外部シミュレーション ソフトウェアでは、次の形式のデータを含むレポートが提供されます。

1    29 Jan 2013 07:33:19.273    29 Jan 2013 09:58:10.460          8691.186

上記のデータを 4 つの文字列に分割しようとしています。

'1', '29 Jan 2013 07:33:19.273', '29 Jan 2013 09:58:10.460', '8691.186'

日付を複数の文字列に分割するため、str.split は使用できません。1 と最初の日付の間、および 1 番目と 2 番目の日付の間に 4 つの空白があるように見えます。これが 4 つの空白なのかタブなのかわかりません。

split の区切り文字として使用'\t'しても、あまり効果がありません。' '区切り文字として (4 つのスペース)を指定すると、最初の 3 つの文字列が取得されます。また、最終的な文字列で空の文字列と先頭のスペースを取得します。2 番目の日付と数字の間には 10 個のスペースがあります。

これに対処する方法についての提案は非常に役立ちます!

ありがとう!

4

2 に答える 2

9

単純な正規表現を使用して、複数のスペースで分割できます。

import re

multispace = re.compile(r'\s{2,}')  # 2 or more whitespace characters
fields = multispace.split(inputline)

デモンストレーション:

>>> import re
>>> multispace = re.compile(r'\s{2,}')  # 2 or more whitespace characters
>>> multispace.split('1    29 Jan 2013 07:33:19.273    29 Jan 2013 09:58:10.460          8691.186')
['1', '29 Jan 2013 07:33:19.273', '29 Jan 2013 09:58:10.460', '8691.186']
于 2013-01-31T10:35:05.840 に答える
0

データが固定幅の場合、文字列で文字アドレス指定を使用できます

n=str[0]
d1=str[2:26]
d2=str[27:51]
l=str[52:]

ただし、Jan 02 が Jan 2 として表示される場合、文字列の幅が可変である可能性があるため、これは機能しない可能性があります。

于 2013-01-31T10:38:42.147 に答える