【问题标题】:How can I output a string excluding ALL whitespaces? [duplicate]如何输出不包括所有空格的字符串? [复制]
【发布时间】:2019-03-04 00:52:13
【问题描述】:

基本上,我正在尝试在 Python 中编写用户输入句子的代码。但是,我需要我的代码删除所有空格(例如制表符、空格、索引等)并将其打印出来。

这是我目前所拥有的:

def output_without_whitespace(text):
  newText = text.split("")

print('String with no whitespaces: '.join(newText))

我很清楚我在这里做错了很多,并且遗漏了很多,但是,我还没有彻底了解拆分和连接字符串,所以如果有人解释一下就好了它给我。

这是我到目前为止的全部代码:

text = input(str('Enter a sentence: '))
print(f'You entered: {text}')

def get_num_of_characters(text):
 result = 0
 for char in text:
     result += 1
 return result
print('Number of characters: ', get_num_of_characters(text))

def output_without_whitespace(text):
    newtext = "".join(text.split())

print(f'String without whitespaces: {newtext}')

我找到了我的问题! 我在这行代码中意识到了这一点。

 print(f'String without whitespaces: {newtext}')

应该是这样的。

print('String without whitespaces: ', output_without_whitespace(text))

我意识到我的问题是为什么没有空格的句子没有打印回给我,因为我没有调用我的函数!

【问题讨论】:

  • 别忘了调用你的函数。
  • @Austin,哪个函数?
  • @eyllanesc "Duplicate" 问题没有回答我的问题。它没有说明如何打印出来。而且,我的代码中仍然出现错误。
  • 这个函数:output_without_whitespace。我没看到你叫它。 :)
  • @Austin 啊,对不起,我刚刚编辑了我的问题。我刚刚发布了我的完整代码。

标签: python python-3.x python-3.6 python-3.5 python-3.3


【解决方案1】:

你有正确的想法,但这里是如何使用 splitjoin 实现它:

def output_without_whitespace(text):
  return ''.join(text.split())

这样:

output_without_whitespace(' this\t  is a\n test..\n ')

会返回:

thisisatest..

【讨论】:

  • 我输入了这段代码,但是,我仍然得到相同的带有空格的字符串。
  • 您是否复制并粘贴了此代码?输入代码时一定有错字。请确保您没有将任何参数传递给split()
  • 是的,我做到了。现在,什么都没有打印出来。
  • 哦,我发现了我的问题
  • 如果要打印,只需printprint(output_without_whitespace(' this\t is a\n test..\n '))
【解决方案2】:

有几种不同的方法可以做到这一点,但这对我来说似乎是最明显的一种。简单高效。

>>> with_spaces = '  The  quick brown       fox  '
>>> list_no_spaces = with_spaces.split() 
>>> ''.join(list_no_spaces)
'Thequickbrownfox'

.split() 不带参数将字符串拆分为一个列表,只要有一个或多个空格字符,就会忽略空格...更多详细信息here

''.join(list_no_spaces) 将列表的元素连接成一个字符串,元素之间没有任何内容,这就是您想要的:'Thequickbrownfox'

如果你使用了','.join(list_no_spaces),你会得到'The,quick,brown,fox'

经验丰富的 Python 程序员倾向于谨慎使用正则表达式。通常最好使用.split().join() 之类的工具来完成这项工作,并在别无选择的情况下保留正则表达式。

【讨论】:

  • 你测试过这个吗?
  • 我的错——这些天给很多 Groovy 写信。固定。
  • 虽然这可能会回答作者的问题,但它缺少一些解释性文字和文档链接。如果没有围绕它的一些短语,原始代码 sn-ps 并不是很有帮助。您可能还会发现how to write a good answer 非常有帮助。请编辑您的答案。
  • 感谢您的反馈。补充说明。我在手机上匆匆写下原来的答案,不好看。我确实写了一个解释,但不知何故在 StackOverflow 应用程序上丢失了它,没有时间重写。
【解决方案3】:

一个简单的解决方案是只使用拆分和重新加入(类似于您正在做的事情):

def output_without_whitespace(text):
    return ''.join(text.split())

首先,我们将初始字符串拆分为单词列表,然后将它们全部连接在一起。

所以想一想:

text.split()

会给我们一个单词列表(由任何空格分隔)。比如:

'hello world'.split() -> ['hello', 'world']

最后

''.join(<result of text.split()>)

将给定列表中的所有单词连接成一个字符串。所以:

''.join(['hello', 'world']) -> 'helloworld'

查看Remove all whitespace in a string in Python了解更多方法。

【讨论】:

    【解决方案4】:

    获取输入、拆分、加入

    s = ''.join((input('Enter string: ').split()))
    
    Enter string: vash the stampede
    vashthestampede
    

    【讨论】:

    • 我已经要求用户事先输入他们的句子。如何在不输入的情况下重写您建议的代码?
    • s = ''.join(variable_name.split())
    • @Vee 与您应用 .split() 相同的概念,然后将其包装在 ''.join()
    猜你喜欢
    • 2017-09-06
    • 2017-04-14
    • 2021-03-26
    • 2015-01-13
    • 2016-12-26
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多