3

テキスト ファイルから一重引用符で囲まれたすべての単語を抽出したいと考えています。テキスト ファイルは次のようになります。

u'MMA': 10,
=u'acrylic'= : 19,
== u'acting lessons': 2,
=u'aerobic': 141,
=u'alto': 2= 4,
=u&#= 39;art therapy': 4,
=u'ballet': 939,
=u'ballroom'= ;: 234,
= =u'banjo': 38,

そして理想的には、私の出力は次のようになります。

MMA,
acrylic,
acting lessons,
...

投稿の閲覧から、これを達成するには、python の NLTK / regex の組み合わせを使用する必要があるようです。私は次のことを試しました:

import re

file = open('artsplus_categories.txt', 'r').readlines()

for line in file:
    list = re.search('^''$', file)

file.close()

次のエラーが表示されます。

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 142, in search
    return _compile(pattern, flags).search(string)
TypeError: expected string or buffer

パターンの探し方が原因でエラーが発生した可能性があると思います。私の論理は、「....」内のすべてを検索するというものです。

re.py をつまずかせているのは何ですか?

ありがとう!

--------------------------------

アシュウィニのコメントに続いて:

import re

file = open('artsplus_categories.txt', 'r').readlines()

for line in file:
    list = re.search('^''$', line)

print list

#file.close()

しかし、出力には何も含まれていません:

Samuel-Finegolds-MacBook-Pro:~ samuelfinegold$ /var/folders/jv/9_sy0bn10mbdft1bk9t14qz40000gn/T/Cleanup\ At\ Startup/artsplus_categories_clean-393952531.278.py.command ; exit;
None
logout


@Rasco:これが私が得ているエラーです:

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 177, in findall
    return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
logout

私はこのコードを使用しています:

file2 = open('artsplus_categories.txt', 'r').readlines()
list = re.findall("'[^']*'", file2)
for x in list:
    print (x)
4

2 に答える 2

2

を正規表現に渡す代わりに、line実際にはリスト(ファイル)全体を渡しました。notに渡す必要がlineあります。re.searchfile

for line in file:
    lis = re.search('^''$', line) # line not file

を変数名として使用しないでくださいlistfileこれらは組み込み関数です。

アップデート:

with open('artsplus_categories.txt') as f:
    for line in f:
        print re.search(r"'(.*)'", line).group(1)
...         
MMA
acrylic
acting lessons
aerobic
alto
art therapy
ballet
ballroom
banjo
于 2013-06-26T15:10:05.653 に答える
2

このコード例を試してください:

import re

file =  """u'MMA': 10,
        =u'acrylic'= : 19,
        == u'acting lessons': 2,
        =u'aerobic': 141,
        =u'alto': 2= 4,
        =u&#= 39;art therapy': 4,
        =u'ballet': 939,
        =u'ballroom'= ;: 234,
        = =u'banjo': 38,"""

list = re.findall("'[^']*'", file)
for x in list:
    print (x)

正しい値を示しています。例の値の 1 つが引用符を正しく開かないため、そこで一致が壊れることに注意してください。

于 2013-06-26T15:44:50.057 に答える