从分隔文本中修剪或删除单个空白字符

时间:2015-02-04 17:50:27

标签: python

我有一个问题,我得到一个#delimited文件,但是,在哈希之间,有一个空格字符表示空值。当我稍后尝试查询文件时,这会导致我出现问题。有没有办法可以删除分隔行中的所有实例,只存在一个空白字符?

这是我文件中的一个示例行。

40001#World Music#Mike Oldfield#Tubular Bells#   53# # #

我希望字符串是......

40001#World Music#Mike Oldfield#Tubular Bells#   53###

5 个答案:

答案 0 :(得分:2)

使用三元条件和列表推导,您可以:

s = "40001#World Music#Mike Oldfield#Tubular Bells#   53# # #"
s2 = "#".join([i if i != " " else "" for i in s.split("#")])
print s2

打印

40001#World Music#Mike Oldfield#Tubular Bells#   53###

无需进口(例如RE)

答案 1 :(得分:0)

使用regular expressions

import re

my_str = "40001#World Music#Mike Oldfield#Tubular Bells# 53# # #"
pattern = re.compile(r'(#)\s(#)\s(#)')

new_str = re.sub(pattern, r'\1\2\3', my_str)

print(new_str)

答案 2 :(得分:0)

使用re.sub功能。

re.sub(r'(?<=#) (?=#)', r'', string)

OR

re.sub(r'(?<=#)\s(?=#)', r'', string)

示例:

>>> s = "40001#World Music#Mike Oldfield#Tubular Bells#   53# # #"
>>> re.sub(r'(?<=#) (?=#)', r'', s)
'40001#World Music#Mike Oldfield#Tubular Bells#   53###'
  • (?<=#)肯定的外观断言,匹配必须以#
  • 开头
  • \s匹配空格字符。
  • (?=#)肯定前瞻,断言匹配必须后跟#个字符。

答案 3 :(得分:0)

这个正则表达式似乎做了你想要的,使用积极的前瞻:http://regexr.com/3abqs

import re
str = "40001#World Music#Mike Oldfield#Tubular Bells#   53# # #"
strf = re.sub(r'#\s+(?=#)', r'#', str)
print(strf)

答案 4 :(得分:0)

您可以使用以下内容: -

orig_str="40001#World Music#Mike Oldfield#Tubular Bells#   53# # #"
splitted_str = orig_str.split("#")[:-1]
new_str = ''
for item in splitted_str:
  if item.strip():
    new_str+=item
  new_str+="#"
print new_str  

这将打印40001#World Music#Mike Oldfield#Tubular Bells# 53###