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

2024-10-03 13:30:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,我得到一个#分隔的文件,但是,在散列之间,有一个空格字符表示一个空值。当我稍后尝试查询文件时,这会给我带来问题。有没有一种方法可以删除分隔行中只有一个空格字符的所有实例?你知道吗

这是我文件中的一行示例。你知道吗

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

我希望绳子是。。。你知道吗

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

Tags: 文件实例方法示例world字符mike空值
3条回答

使用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)

使用三元条件和列表理解,您可以:

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.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###'
  • (?<=#)正向lookback断言匹配必须以#开头
  • \s匹配空格字符。你知道吗
  • (?=#)肯定的前瞻,断言匹配必须后跟#字符。你知道吗

相关问题 更多 >