Hướng dẫn python remove quotes from string - python xóa dấu ngoặc kép khỏi chuỗi

Tôi có một mã Python sẽ nhận ra lời nói bằng cách sử dụng động cơ Google STT và cung cấp lại cho tôi kết quả nhưng tôi nhận được kết quả trong chuỗi với "trích dẫn". Tôi không muốn trích dẫn đó trong mã của mình vì tôi sẽ sử dụng nó để chạy nhiều lệnh và nó không hoạt động. Tôi đã không thử bất cứ điều gì cho đến khi tôi không nhận được bất cứ thứ gì để thử! Đây là chức năng trong mã Python sẽ nhận ra lời nói:

def recog():
    p = subprocess.Popen(['./speech-recog.sh'], stdout=subprocess.PIPE,
                                            stderr=subprocess.PIPE)
    global out,err
    out, err = p.communicate()
    print out

Đây là bài phát biểu recog.sh:

#!/bin/bash

hardware="plughw:1,0"
duration="3"
lang="en"
hw_bool=0
dur_bool=0
lang_bool=0
for var in "$@"
do
    if [ "$var" == "-D" ] ; then
        hw_bool=1
    elif [ "$var" == "-d" ] ; then
        dur_bool=1
    elif [ "$var" == "-l" ] ; then
        lang_bool=1
    elif [ $hw_bool == 1 ] ; then
        hw_bool=0
        hardware="$var"
    elif [ $dur_bool == 1 ] ; then
        dur_bool=0
        duration="$var"
    elif [ $lang_bool == 1 ] ; then
        lang_bool=0
        lang="$var"
    else
        echo "Invalid option, valid options are -D for hardware and -d for duration"
    fi
done

arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'

rm /dev/shm/out.flac

Điều này được lấy từ chương trình VoiceCommand của Steven Hickson được thực hiện cho Raspberry Pi

Đã hỏi ngày 3 tháng 12 năm 2016 lúc 17:55Dec 3, 2016 at 17:55

Hướng dẫn python remove quotes from string - python xóa dấu ngoặc kép khỏi chuỗi

Alok Naushadalok NaushadAlok Naushad

1.2452 huy hiệu vàng8 Huy hiệu bạc9 Huy hiệu đồng2 gold badges8 silver badges9 bronze badges

2

Chỉ cần sử dụng các phương thức chuỗi

#!/bin/bash

hardware="plughw:1,0"
duration="3"
lang="en"
hw_bool=0
dur_bool=0
lang_bool=0
for var in "$@"
do
    if [ "$var" == "-D" ] ; then
        hw_bool=1
    elif [ "$var" == "-d" ] ; then
        dur_bool=1
    elif [ "$var" == "-l" ] ; then
        lang_bool=1
    elif [ $hw_bool == 1 ] ; then
        hw_bool=0
        hardware="$var"
    elif [ $dur_bool == 1 ] ; then
        dur_bool=0
        duration="$var"
    elif [ $lang_bool == 1 ] ; then
        lang_bool=0
        lang="$var"
    else
        echo "Invalid option, valid options are -D for hardware and -d for duration"
    fi
done

arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'

rm /dev/shm/out.flac
3 nếu chúng xảy ra trong suốt hoặc
#!/bin/bash

hardware="plughw:1,0"
duration="3"
lang="en"
hw_bool=0
dur_bool=0
lang_bool=0
for var in "$@"
do
    if [ "$var" == "-D" ] ; then
        hw_bool=1
    elif [ "$var" == "-d" ] ; then
        dur_bool=1
    elif [ "$var" == "-l" ] ; then
        lang_bool=1
    elif [ $hw_bool == 1 ] ; then
        hw_bool=0
        hardware="$var"
    elif [ $dur_bool == 1 ] ; then
        dur_bool=0
        duration="$var"
    elif [ $lang_bool == 1 ] ; then
        lang_bool=0
        lang="$var"
    else
        echo "Invalid option, valid options are -D for hardware and -d for duration"
    fi
done

arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'

rm /dev/shm/out.flac
4 nếu chúng chỉ xảy ra khi bắt đầu và/hoặc kết thúc:

a = '"sajdkasjdsak" "asdasdasds"' 

a = a.replace('"', '')
'sajdkasjdsak asdasdasds'

# or, if they only occur at start and end...
a = a.strip('\"')
'sajdkasjdsak" "asdasdasds'

# or, if they only occur at start...
a = a.lstrip('\"')

# or, if they only occur at end...
a = a.rstrip('\"')

Đã trả lời ngày 3 tháng 12 năm 2016 lúc 18:16Dec 3, 2016 at 18:16

Smcismcismci

30.9K18 Huy hiệu vàng111 Huy hiệu bạc146 Huy hiệu đồng18 gold badges111 silver badges146 bronze badges

3

Bạn có thể sử dụng eval () cho mục đích này

>>> url = "'http address'"
>>> eval(url)
'http address'

Trong khi eval () đặt ra rủi ro, tôi nghĩ trong bối cảnh này là an toàn.

Đã trả lời ngày 13 tháng 3 năm 2018 lúc 4:27Mar 13, 2018 at 4:27

koliyat9811koliyat9811koliyat9811

7871 huy hiệu vàng7 Huy hiệu bạc1 gold badge7 silver badges11 bronze badges

4

Có một số cách này có thể được thực hiện.

  • Bạn có thể sử dụng chức năng chuỗi tích hợp

    #!/bin/bash
    
    hardware="plughw:1,0"
    duration="3"
    lang="en"
    hw_bool=0
    dur_bool=0
    lang_bool=0
    for var in "$@"
    do
        if [ "$var" == "-D" ] ; then
            hw_bool=1
        elif [ "$var" == "-d" ] ; then
            dur_bool=1
        elif [ "$var" == "-l" ] ; then
            lang_bool=1
        elif [ $hw_bool == 1 ] ; then
            hw_bool=0
            hardware="$var"
        elif [ $dur_bool == 1 ] ; then
            dur_bool=0
            duration="$var"
        elif [ $lang_bool == 1 ] ; then
            lang_bool=0
            lang="$var"
        else
            echo "Invalid option, valid options are -D for hardware and -d for duration"
        fi
    done
    
    arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'
    
    rm /dev/shm/out.flac
    
    3 để thay thế tất cả các lần xuất hiện của trích dẫn trong một chuỗi đã cho:

    >>> s = '"abcd" efgh'
    >>> s.replace('"', '')
    'abcd efgh'
    >>> 
    
  • Bạn có thể sử dụng hàm chuỗi

    #!/bin/bash
    
    hardware="plughw:1,0"
    duration="3"
    lang="en"
    hw_bool=0
    dur_bool=0
    lang_bool=0
    for var in "$@"
    do
        if [ "$var" == "-D" ] ; then
            hw_bool=1
        elif [ "$var" == "-d" ] ; then
            dur_bool=1
        elif [ "$var" == "-l" ] ; then
            lang_bool=1
        elif [ $hw_bool == 1 ] ; then
            hw_bool=0
            hardware="$var"
        elif [ $dur_bool == 1 ] ; then
            dur_bool=0
            duration="$var"
        elif [ $lang_bool == 1 ] ; then
            lang_bool=0
            lang="$var"
        else
            echo "Invalid option, valid options are -D for hardware and -d for duration"
        fi
    done
    
    arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'
    
    rm /dev/shm/out.flac
    
    6 và biểu thức trình tạo để xóa tất cả các trích dẫn khỏi một chuỗi đã cho:

    >>> s = '"abcd" efgh'
    >>> ''.join(c for c in s if c not in '"')
    'abcd efgh'
    >>> 
    
  • Bạn có thể sử dụng một biểu thức thông thường để xóa tất cả các trích dẫn khỏi chuỗi đã cho. Điều này có thêm lợi thế cho việc cho phép bạn có quyền kiểm soát khi nào và nơi một báo giá sẽ bị xóa:

    >>> s = '"abcd" efgh'
    >>> import re
    >>> re.sub('"', '', s)
    'abcd efgh'
    >>> 
    

Đã trả lời ngày 3 tháng 12 năm 2016 lúc 18:12Dec 3, 2016 at 18:12

Hướng dẫn python remove quotes from string - python xóa dấu ngoặc kép khỏi chuỗi

Christian Deanchristian Trưởng khoaChristian Dean

21.5K7 Huy hiệu vàng 50 Huy hiệu bạc81 Huy hiệu đồng7 gold badges50 silver badges81 bronze badges

Cách dễ nhất là:

s = '"sajdkasjdsaasdasdasds"' 
import json
s = json.loads(s)

Đã trả lời ngày 1 tháng 9 năm 2020 lúc 8:31Sep 1, 2020 at 8:31

RyanryanRyan

7941 Huy hiệu vàng12 Huy hiệu bạc26 Huy hiệu đồng1 gold badge12 silver badges26 bronze badges

3

________số 8

Đã trả lời ngày 3 tháng 12 năm 2016 lúc 18:06Dec 3, 2016 at 18:06

Harald Nordgrenharald NordgrenHarald Nordgren

10,9k6 Huy hiệu vàng40 Huy hiệu bạc62 Huy hiệu Đồng6 gold badges40 silver badges62 bronze badges

4

Bạn có thể thay thế các ký tự "Trích dẫn" bằng một chuỗi trống, như thế này:

>>> a = '"sajdkasjdsak" "asdasdasds"' 
>>> a
'"sajdkasjdsak" "asdasdasds"'
>>> a = a.replace('"', '')
>>> a
'sajdkasjdsak asdasdasds'

Trong trường hợp của bạn, bạn có thể làm tương tự cho biến

#!/bin/bash

hardware="plughw:1,0"
duration="3"
lang="en"
hw_bool=0
dur_bool=0
lang_bool=0
for var in "$@"
do
    if [ "$var" == "-D" ] ; then
        hw_bool=1
    elif [ "$var" == "-d" ] ; then
        dur_bool=1
    elif [ "$var" == "-l" ] ; then
        lang_bool=1
    elif [ $hw_bool == 1 ] ; then
        hw_bool=0
        hardware="$var"
    elif [ $dur_bool == 1 ] ; then
        dur_bool=0
        duration="$var"
    elif [ $lang_bool == 1 ] ; then
        lang_bool=0
        lang="$var"
    else
        echo "Invalid option, valid options are -D for hardware and -d for duration"
    fi
done

arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'

rm /dev/shm/out.flac
7.

Đã trả lời ngày 3 tháng 12 năm 2016 lúc 18:05Dec 3, 2016 at 18:05

Hướng dẫn python remove quotes from string - python xóa dấu ngoặc kép khỏi chuỗi

Aza Taza tAza T

5894 Huy hiệu bạc11 Huy hiệu đồng4 silver badges11 bronze badges

Điều này sẽ xóa các trích dẫn đầu tiên và cuối cùng trong chuỗi của bạn

#!/bin/bash

hardware="plughw:1,0"
duration="3"
lang="en"
hw_bool=0
dur_bool=0
lang_bool=0
for var in "$@"
do
    if [ "$var" == "-D" ] ; then
        hw_bool=1
    elif [ "$var" == "-d" ] ; then
        dur_bool=1
    elif [ "$var" == "-l" ] ; then
        lang_bool=1
    elif [ $hw_bool == 1 ] ; then
        hw_bool=0
        hardware="$var"
    elif [ $dur_bool == 1 ] ; then
        dur_bool=0
        duration="$var"
    elif [ $lang_bool == 1 ] ; then
        lang_bool=0
        lang="$var"
    else
        echo "Invalid option, valid options are -D for hardware and -d for duration"
    fi
done

arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'

rm /dev/shm/out.flac
0

Output:

#!/bin/bash

hardware="plughw:1,0"
duration="3"
lang="en"
hw_bool=0
dur_bool=0
lang_bool=0
for var in "$@"
do
    if [ "$var" == "-D" ] ; then
        hw_bool=1
    elif [ "$var" == "-d" ] ; then
        dur_bool=1
    elif [ "$var" == "-l" ] ; then
        lang_bool=1
    elif [ $hw_bool == 1 ] ; then
        hw_bool=0
        hardware="$var"
    elif [ $dur_bool == 1 ] ; then
        dur_bool=0
        duration="$var"
    elif [ $lang_bool == 1 ] ; then
        lang_bool=0
        lang="$var"
    else
        echo "Invalid option, valid options are -D for hardware and -d for duration"
    fi
done

arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'

rm /dev/shm/out.flac
1

Đã trả lời ngày 8 tháng 10 năm 2021 lúc 0:53Oct 8, 2021 at 0:53

Hướng dẫn python remove quotes from string - python xóa dấu ngoặc kép khỏi chuỗi

Để thêm vào bình luận của @Christian:

Thay thế tất cả các trích dẫn đơn hoặc đôi trong một chuỗi:

#!/bin/bash

hardware="plughw:1,0"
duration="3"
lang="en"
hw_bool=0
dur_bool=0
lang_bool=0
for var in "$@"
do
    if [ "$var" == "-D" ] ; then
        hw_bool=1
    elif [ "$var" == "-d" ] ; then
        dur_bool=1
    elif [ "$var" == "-l" ] ; then
        lang_bool=1
    elif [ $hw_bool == 1 ] ; then
        hw_bool=0
        hardware="$var"
    elif [ $dur_bool == 1 ] ; then
        dur_bool=0
        duration="$var"
    elif [ $lang_bool == 1 ] ; then
        lang_bool=0
        lang="$var"
    else
        echo "Invalid option, valid options are -D for hardware and -d for duration"
    fi
done

arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'

rm /dev/shm/out.flac
2

Đã trả lời ngày 7 tháng 12 năm 2020 lúc 15:35Dec 7, 2020 at 15:35