[英]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.