【发布时间】:2016-07-22 23:59:24
【问题描述】:
在我的程序中,我正在解析日语定义,我需要删除一些内容。我需要在三件事之间取出一些东西。 「text」(text)《text》
取出「」 之间的东西我一直在做sentence = re.sub('「[^)]*」','', sentence) 这个问题是,由于某种原因,如果「」 中有括号,它不会替换任何东西。另外,我尝试对其他两件事使用相同的代码,例如sentence = re.sub('([^)]*)','', sentence)
sentence = re.sub('《[^)]*》','', sentence) 但由于某种原因它不起作用。没有错误或任何东西,它只是不能替代任何东西。
我怎样才能做到这一点,或者有更好的方法吗?
编辑:
不过,我对此的另一部分有一点小问题。在我更换任何东西之前,我会检查长度以确保它超过一定长度。
parse = re.findall(r'「[^」]*」','', match.text)
if len(str(parse)) > 8:
sentence = re.sub(r'「[^」]*」','', match.text)
现在这似乎导致了一个错误:
Traceback (most recent call last):
File "C:/Users/Dominic/PycharmProjects/untitled9/main.py", line 48, in <module>
parse = re.findall(r'「[^」]*」','', match.text)
File "C:\Python34\lib\re.py", line 206, in findall
return _compile(pattern, flags).findall(string)
File "C:\Python34\lib\re.py", line 275, in _compile
bypass_cache = flags & DEBUG
TypeError: unsupported operand type(s) for &: 'str' and 'int'
我有点理解是什么原因造成的,但我不明白为什么仅仅因为轻微的变化就无法正常工作。我知道 re.sub 部分很好,只是前两行导致了问题。
【问题讨论】:
-
您的正则表达式匹配角度之间不是括号的任何内容,所以难怪。你需要
sentence = re.sub('「[^」]*」','', sentence) -
关于您编辑中的错误:
re.findall不接受替换字符串。因此match.text作为flags参数传递。