簡體   English   中英

拆分用戶輸入並在Python字符串中添加字符

[英]Split user input and add character in Python string

我有一個Python腳本,它接受用戶輸入(使用條形碼進行掃描),隨后會生成包含所有用戶數據的CSV文件。 然后,此CSV文件用於驅動Crystal報表。

輸入由連接的字符串的單個字符串組成,這些字符串由空格分隔,即項目編號,批號和數量。

    Example: G00177 LOT12345 24

但是,問題在於項目號或批號可能是數字而不是字符串:

    Example 1: G00177 12345 24
    Example 2: 00177 12345 24

我的想法是在Item#和Lot#的開頭附加一個字符,將其強制為字符串,然后使用Crystal自動抑制添加的字符。

到目前為止,我只能在商品#的開頭添加一個字符,而不能在批號中添加一個字符。 我也不想附加到“數量”字段,因為它將始終是數字。

任何批評,見解或建議,我們將不勝感激。

我只是在學習Python,我知道我的方法不是最好的。

感謝您的時間。

您可以嘗試如下操作:

report_one = '00177 12345 24'
report_two = 'G0177 12345 24'
report_three = 'G0177 I2345 24'

def convert(original):
    s = original.split()
    for i in range(2):       # 2 is used here because that's how many 'words'
        try:                 #     we want to check for numeric-ness. This can
            int(s[i])        #     be adjusted if you have to change your schema
        except ValueError:   #     at some point in the future.
            s[i] += 'S'
    return ' '.join(s)

print convert(report_one)    # Prints 00177 12345 24
print convert(report_two)    # Prints G0177S 12345 24
print convert(report_three)  # Prints G0177S I2345S 24

這首先將字符串拆分成各個單詞。 您知道第一個和第二個可能是整數,並且您需要讓下一個系統將它們理解為字符串的方式。

如果字符串不是整數,則使用拆分詞在try塊下將該詞轉換為int會拋出ValueError 也就是說,如果它包含任何字母,則將啟動except ValueError子句。此時,您可以簡單地將字母附加到末尾,然后讓您的下一個系統掃描該末尾字母的單詞(此處我的示例使用'S' )。

如果要在開頭添加字母,則可以將s[i] += 'S'替換為: s[i] = 'S' + s[i]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM