0

私は次のことを行う方法として頭を悩ませてきました:

"003 HELLO, banana apple,xyz 004 HELLI, pear peach,lmn" 次のように分割する必要がある行でいっぱいのドキュメント全体があるようなデータの文字列がある場合:

003     HELLO, banana apple,xyz
004     HELLI, pear peach,lmn

私にとって論理的なことは、2 番目のコンマに続く単語の後で行を分割することです。これは、ずっと続くパターンだからです。

確かに、これを re 関数で行う方法が必要です。

これを行う方法はありますか?

どうもありがとう

4

4 に答える 4

0

結果として何を期待しているかについて、より具体的に教えていただけますか? 行の束をリストに分割しようとしている場合は、いつでも使用できます.split( '\n' )

于 2012-08-22T22:35:37.920 に答える
0

ファイル全体を反復処理するには、次のようにします。

lines = []

with open('file.txt', 'r') as handle:
  for line in handle:
    lines.append(line.split(',')[-1].strip())

print lines

あなたがファイルから何を抽出しようとしているのかについて少し混乱しているので、それが明確になった場合、私の答えは無効になる可能性があります.

于 2012-08-22T22:38:21.977 に答える
0

おそらくこれ

import re
result = re.findall(["[^,\s]*,[^,]*,\S*", data)

例えば

re.findall(["[^,\s] ,[^,] ,\S*", "003 HELLO, バナナ アップル,xyz 004 HELLI, 梨桃,lmn")
['003 HELLO, バナナ アップル,xyz' ,'004 HELLI, pear peach,lmn']

于 2012-08-22T22:39:37.377 に答える
0

はい、正規表現を使用して数値を抽出できます。次に例を示します。

import re

s = '003 HELLO, banana apple,xyz'

m = re.match(r'^(\d+) ', s)
if m:
    digits = m.group(1)
    value = int(digits)
    print "{} : `{}`".format(value, s[len(digits):].strip())
else:
    print "Invalid format"

正規表現は次のようになり、次のよう^(\d+)に説明できます。

  • 文字列の開始^
  • グループ(...)
  • \d
  • ...1回以上繰り返す+
  • 空間

後で、一致したグループの値 (つまり数字) が を使用して抽出されm.group(1)ます。

于 2012-08-22T22:39:52.267 に答える