我有来自here的莎士比亚全集数据,我希望在单词嵌入算法中使用它来创建模型。模型的要求是整个文本只提供单个空格,不存在其他类型的空格。我怎么能这样做?我发现如何为单个字符串执行此操作,但它不适用于文本文件。
我的尝试(我不是很了解python):
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JComponent;
import javax.swing.JFrame;
class GradientPane extends JComponent {
public void paint(Graphics g) {
Graphics2D g2D = (Graphics2D) g;
Point2D.Float p1 = new Point2D.Float(150.f, 75.f); // Gradient line start
Point2D.Float p2 = new Point2D.Float(250.f, 75.f); // Gradient line end
float width = 300;
float height = 50;
Rectangle2D.Float rect1 = new Rectangle2D.Float(p1.x - 100, p1.y - 25, width, height);
GradientPaint g2 = new GradientPaint(p1, Color.WHITE, p2, Color.DARK_GRAY, false); // Acyclic gradient
rect1.setRect(p1.x - 100, p1.y - 25, width, height);
g2D.setPaint(g2); // Gradient color fill
g2D.fill(rect1); // Fill the rectangle
g2D.setPaint(Color.BLACK); // Outline in black
g2D.draw(rect1); // Fill the rectangle
g2D.draw(new Line2D.Float(p1, p2));
}
}
public class AcyclicGradientPaint {
public static void main(String[] a) {
JFrame window = new JFrame("Acyclic Gradient Paint");
window.setBounds(30, 30, 300, 300);
window.getContentPane().add(new GradientPane());
window.setVisible(true);
}
}
清理后的线条在打印时没有删除with open(file_path, 'r') as data:
for line in data:
cleanedline = line.strip('\n')
,所以我没有将它们写回文件。
答案 0 :(得分:2)
您可以尝试使用正则表达式:
import re
with open(file_path) as data:
text = re.sub(r'\s+', ' ', data.read())
\s+
正则表达式模式将匹配一个或多个空白字符的任何序列。 re.sub()
会将匹配的文本替换为单个空格。
空格由空格,制表符,换行符,返回表,换页符,垂直制表符等字符组成。它不包括标点符号。
另一种没有正则表达式的方法是使用split()
然后join()
:
with open(file_path) as data:
text = ' '.join(data.read().split())