最优雅的方式摆脱白色空间和新线条?

时间:2017-12-15 21:19:18

标签: python whitespace

我正在编写一个脚本来解析每个Outlook电子邮件中的特定数据。

在解析它之前,我写了一些东西去除掉我的字符串中的所有回车符,新空格和空格,但它非常难看。任何让它更优雅的想法?

messageStr = messageStr.replace("\r","")
messageStr = messageStr.split('\n')
messageStr = [i for i in messageStr if i != '']
messageStr = [i for i in messageStr if i != ' ']

2 个答案:

答案 0 :(得分:1)

.strip字符串方法会删除前导和尾随空格。如果你想摆脱每一行和其他领先/尾随空格的回车,你可以这样做

lines = [line.strip() for line in message.split('\n')]

如果要删除所有空格,而不仅仅是前导/尾随,您可以针对包含要过滤的所有空格的字符串执行类似的操作。 string模块有一个帮助器。以下内容将从字符串s中删除所有空格:

import string
filtered_string = ''.join(char for char in s if char not in string.whitespace)

答案 1 :(得分:1)

此任务与数据清理任务有关,这是我的方法:

将所有符号放入列表中,然后检查列表中是否有符号,然后将其删除。

// Create a class for dragged element
// I will create a new instance form this class when drag
function draggedElement(elementId, parentId) {
  this.id = elementId,
  this.parentId = parentId
};

// Array of dragged elements
// This array use for store dragged elements and their parent's id
var draggedElementList = [];

$('.draggable').draggable({
  start: function(event, ui) {
    // Store or update parent's id  
    updateDraggedElementList($(this).attr("id"), $(this).parent().attr("id"));
  }
});

// This method used for update or store draaged elemens and their parent's id
function updateDraggedElementList(elementId, parentId) {

  // Create new instance
  var element = new draggedElement(elementId, parentId);

  // Check element has already been added or not
  var foundIndex = draggedElementList.findIndex(el => el.id == element.id);
  if (foundIndex > -1)
    draggedElementList[foundIndex] = element;
  else
    draggedElementList.push(element);

  // Print dragged elements and their parents
  printDraggedElements();
}

// I wrote this method for test
function printDraggedElements() {
  for (var i = 0; i < draggedElementList.length; i++) {
    console.log(draggedElementList[i].id);
    console.log(draggedElementList[i].parentId);
  }
}

输出:

dummy_string='Hello this is \n example \r to remove '' the special symbols ' ''
special_sym=['\r','\n','',' ']


[dummy_string.split().__delitem__(j) for j,i in enumerate(dummy_string.split()) if i in special_sym]

print(" ".join(dummy_string.split()))

P.S:你在special_sym列表中不需要Hello this is example to remove the special symbols '\r',因为当你执行'\n'时它会自动删除那些,但我仍然只是在那里展示。