修剪或删除分隔文本中的单个空格字符



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

这是我文件中的示例行。

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

我希望字符串是...

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

使用三元条件和列表推导式,您可以执行以下操作:

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)

使用正则表达式。

import re
my_str = "40001#World Music#Mike Oldfield#Tubular Bells# 53# # #"
pattern = re.compile(r'(#)s(#)s(#)')
new_str = re.sub(pattern, r'123', my_str)
print(new_str)

使用re.sub函数。

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

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 匹配空格字符。
  • (?=#) 正面展望,断言比赛后必须有一个#角色。

你可以使用类似的东西:-

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###

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

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

相关内容

最新更新