如何从文本中获取元音,辅音和其他字符

时间:2016-11-08 20:44:32

标签: python parsing for-loop while-loop

我需要一个程序,要求用户输入任何文本,然后显示三个字符串,第一个字符串包括文本中的所有元音,所有辅音中的第二个,以及所有其他字符中的第三个。我现在有一个while循环,我想知道如何将它转换为Python中的for循环。

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/md_white_1000"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <ImageView
        android:layout_width="@dimen/laytop_imgwidthheight"
        android:layout_height="@dimen/laytop_imgwidthheight"
        android:contentDescription="@string/app_name"
        android:src="@drawable/app_icon"
        android:visibility="gone"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="start"
        android:orientation="horizontal" >

        <com.commonutility.RoundImageView android:id="@+id/image_view_country_flag"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:adjustViewBounds="true"
            android:scaleType="fitXY"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:layout_gravity="center_vertical"
            android:layout_marginRight="16dp"
            android:src="@drawable/country_default_logo"/>

        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:layout_margin="7dp"
            android:background="@color/md_grey_300"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/credits_bar_credits_label"
            android:textColor="@color/md_grey_700"
            android:textSize="19sp"
            android:fontFamily="sans-serif-thin"
            android:layout_gravity="center"/>

        <TextView
            android:id="@+id/credit_wallet"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="19sp"
            android:layout_gravity="center"
            android:textColor="@color/md_grey_700"
            android:textStyle="normal"
            android:padding="16dp" />

    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/md_grey_300"/>

</LinearLayout>

2 个答案:

答案 0 :(得分:2)

由于字符串是可迭代的,因此可以替换

while i < len(text):
    char = text[i]

for char in text:
    # no more need for 'i'

顺便说一下,试试if char.lower() in "aioue":

答案 1 :(得分:0)

既然代码很简单,那么通过使用set()元音而不是字符串,可以提高效率:

# Vowels Set
vowels = set("aeiouAEIOU")

# Accumulators
vowels_string = ""
consonants_string = ""
other_string = ""

# User Input
text = input("Enter text: ")

# Process Text
for char in text:
    if char.isalpha():
        if char in vowels:
            vowels_string += char
        else:
            consonants_string += char
    else:
        other_string += char

# Add pseudo-guillemets to make spaces "visible"
print("<<", vowels_string, ">>", sep="")
print("<<", consonants_string, ">>", sep="")
print("<<", other_string, ">>", sep="")