我需要从无用的代码或异常中清除大量文本文件,以便进行一些文本分析,例如:
==>
日志:星期一12月17日17:23:54 GMT + 01:00 2001 4 org.eclipse.ui 0 java.util.ConcurrentModificationException
java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java(Compiled
Code))
at java.util.AbstractList$Itr.next(AbstractList.java(Compiled Code))
at
org.eclipse.jdt.internal.ui.search.JavaSearchSubGroup.fill(JavaSearchSubGroup.java:30)
at org.eclipse.jdt.internal.ui.search.JavaSearchGroup.fill(JavaSearchGroup.java:51)
at org.eclipse.jdt.internal.ui.actions.ContextMenuGroup.add(ContextMenuGroup.java:25)
at
org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.menuAboutToShow(PackageExplorerPart.java:498)
at org.eclipse.jface.action.MenuManager.fireAboutToShow(MenuManager.java:220)
at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:253)
at org.eclipse.jface.action.MenuManager.access$0(MenuManager.java:250)
at org.eclipse.jface.action.MenuManager$1.menuShown(MenuManager.java:280)
< ==
或:
20011211 使用断点在调试器下运行以下编译单元 表示。要使Windows达到断点,您必须拥有正确的dl 并运行辅助功能客户端。如果你不能用a复制这个问题 更简单的例子,我可以引导你完成这个步骤。 这个CU唯一不同的是它包含一个非公开类 以及公共课。当我在调试器中点击断点时,我得到了一个 对话告诉我,它无法找到非公开课的来源。该 对话框非常持久 - 我告诉它OK和取消,但它一直在进行 背部。即使我切换到Java透视图,我仍然会得到唠叨对话框 。如果我终止进程,则对话框不会返回。但重点是 调试器应该能够看到这个类的源 - 它是正确的 在我的eclipse工作区。它甚至不会隐藏在某个地方的某个罐子里 - 它非常 可见。我怀疑它是非公共类的东西让人感到困惑 源查找。如果有帮助,我会附上对话框。这是代码:
==>
package test;
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.internal.win32.*;
import org.eclipse.swt.internal.ole.win32.*;
import org.eclipse.swt.ole.win32.*;
public class AccessibilityTest {
static Display display;
static Shell shell;
static FakeWidget fakeWidget;
public static void main(String[] args) {
display = new Display();
shell = new Shell(display);
shell.setLayout(new GridLayout());
shell.setText("Accessibility Test");
fakeWidget = new FakeWidget(shell, SWT.MULTI);
fakeWidget.setLayoutData(new GridData(GridData.FILL_BOTH));
shell.setSize(140, 110);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
private static GUID IIDFromString(String lpsz) {
char[] buffer = (lpsz + "\0").toCharArray();
GUID lpiid = new GUID();
if (COM.IIDFromString(buffer, lpiid) == COM.S_OK)
return lpiid;
return null;
}
< ==
结果必须是:
和
20011211 使用断点在调试器下运行以下编译单元 表示。要使Windows达到断点,您必须拥有正确的dl 并运行辅助功能客户端。如果你不能用a复制这个问题 更简单的例子,我可以引导你完成这个步骤。 这个CU唯一不同的是它包含一个非公开类 以及公共课。当我在调试器中点击断点时,我得到了一个 对话告诉我,它无法找到非公开课的来源。该 对话框非常持久 - 我告诉它OK和取消,但它一直在进行 背部。即使我切换到Java透视图,我仍然会得到唠叨对话框 。如果我终止进程,则对话框不会返回。但重点是 调试器应该能够看到这个类的源 - 它是正确的 在我的eclipse工作区。它甚至不会隐藏在某个地方的某个罐子里 - 它非常 可见。我怀疑它是非公共类的东西让人感到困惑 源查找。如果有帮助,我会附上对话框。这是代码:
在上述情况下,无用的文字介于" ==>"代码"< ==" (文中的箭头不是) ...我现在正在使用python ...但是我需要一个工具来清除代码或异常中的所有文本......它是否存在?因为我认为在这些肮脏的文本中制作nlp可能毫无用处和错误......
答案 0 :(得分:0)
如果您使用的是python,则可以删除==>之间的文本。代码< ==通过读取==>的索引和< ==
示例:
str = "Hello, Welcome to ==>python<== programming"
opentag = "==>"
closetag = "<=="
Otag_index = str.find(opentag)
Ctag_index = str.find(closetag)
strToRemove = str[Otag_index+3:Ctag_index]
str = str.replace(strToRemove, '')
print(str)
答案 1 :(得分:0)
这是一个非常重要的问题,并且没有预定义的解决方案,因为它取决于您的数据。但是,存在将文本(自然语言,NL)与代码分开的不同方法,但不能保证它们在100%的时间内都能正常工作。
这是我的建议:
首先,您可以检查是否使用某种格式将代码与NL分开(如GitHubs markdown)并编译适当的正则表达式来检测代码。我使用以下正则表达式来清除从GitHub中提取的问题:
leading_whitespace_pattern = re.compile(r"^( {4,}|\t( |\t)*).*?$", re.MULTILINE)
backtick_pattern = re.compile(r"```.*?```", re.DOTALL)
以下是从Redmine中提取的问题的更多内容:
code_pattern = re.compile('<pre>.*?</pre>', re.DOTALL)
at_pattern = re.compile(r"@.*?@")
如果这对您不起作用,事情会变得棘手。您将需要开发更多匹配数据中可能出现的所有代码行的正则表达式,否则您将不得不使用更高级的方法。 Bacchelli等人。做了很多关于这个主题的研究,并使用了不同的技术和良好的结果。但是,我不确定他们是否公布了他们的实施: