如何删除字符串列表中的所有空白元素?

时间:2019-06-10 04:51:12

标签: python python-3.x

我有一个字符串列表,text= ['He', 'was', '' ,'sitting', ' ', 'next', ' ', 'to me']

我想从列表中删除空白元素''

我尝试使用filter方法,但它只删除了空元素

list(filter(None, text))

我希望列表像

['He', 'was' ,'sitting','next','to me']

3 个答案:

答案 0 :(得分:1)

现在,正如您正确指出的那样,list(filter(None, text))正在删除空字符串,而不是带有空格的字符串

要删除带有空格的字符串,可以从列表的每个元素中strip进行空格并进行比较,然后使用非空字符串创建新列表

text= ['He', 'was', '' ,'sitting', ' ', 'next', ' ', 'to me']

print([item for item in text if item.strip()])

#Or using filter
#print(list(filter(lambda item:item.strip(), text)))

输出将为

['He', 'was', 'sitting', 'next', 'to me']

答案 1 :(得分:0)

几乎正确,您只是使用了错误的谓词:

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "27"
  ANDROID_BUILD_TOOLS: "27.0.0"
  ANDROID_SDK_TOOLS: "24.4.1"

before_script:
  - apt-get --quiet update --yes
  - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
  - wget --quiet --output-document=android-sdk.tgz https://dl.google.com/android/android-sdk_r${ANDROID_SDK_TOOLS}-linux.tgz
  - tar --extract --gzip --file=android-sdk.tgz
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter android-${ANDROID_COMPILE_SDK}
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter platform-tools
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter build-tools-${ANDROID_BUILD_TOOLS}
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-android-m2repository
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-google_play_services
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-m2repository
  - export ANDROID_HOME=$PWD/android-sdk-linux
  - export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
  - export GRADLE_USER_HOME="$(pwd)/.gradle"
  - export ANDROID_HOME="$(pwd)/.android"
  - mkdir -p "${ANDROID_HOME}/licenses"
  - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55\nd56f5187479451eabf01fb78af6dfcb131a6481e" > "${ANDROID_HOME}/licenses/android-sdk-license"
  - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "${ANDROID_HOME}/licenses/android-sdk-preview-license"
  - echo -e "\nd975f751698a77b662f1254ddbeed3901e976f5a" > "${ANDROID_HOME}/licenses/intel-android-extra-license"
  #- ./gradlew --parallel --stacktrace --no-daemon build 
  - chmod +x ./gradlew

stages:
  - build

build:
  stage: build
  script:
    - ./gradlew assembleDebug
  artifacts:
    paths:
    - app/build/outputs/

答案 2 :(得分:0)

或者也许我们可以更快地做到这一点

text= ['He', 'was', '' ,'sitting', ' ', 'next', ' ', 'to me']
print(' '.join(text).split()) # this will remove both whitespace element + whitespaces

OUTPUT:
['He', 'was', 'sitting', 'next', 'to', 'me']